题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680

Choose the best route

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7201    Accepted Submission(s):
2350

Problem Description
One day , Kiki wants to visit one of her friends. As
she is liable to carsickness , she wants to arrive at her friend’s home as soon
as possible . Now give you a map of the city’s traffic route, and the stations
which are near Kiki’s home so that she can take. You may suppose Kiki can change
the bus at any station. Please find out the least time Kiki needs to spend. To
make it easy, if the city have n bus stations ,the stations will been expressed
as an integer 1,2,3…n.
 
Input
There are several test cases.
Each case begins with
three integers n, m and s,(n<1000,m<20000,1=<s<=n) n stands for the
number of bus stations in this city and m stands for the number of directed ways
between bus stations .(Maybe there are several ways between two bus stations .)
s stands for the bus station that near Kiki’s friend’s home.
Then follow m
lines ,each line contains three integers p , q , t (0<t<=1000). means from
station p to station q there is a way and it will costs t minutes .
Then a
line with an integer w(0<w<n), means the number of stations Kiki can take
at the beginning. Then follows w integers stands for these stations.
 
Output
The output contains one line for each data set : the
least time Kiki needs to spend ,if it’s impossible to find such a route ,just
output “-1”.
 
Sample Input
5 8 5
1 2 2
1 5 3
1 3 4
2 4 7
2 5 6
2 3 5
3 5 1
4 5 1
2
2 3
4 3 4
1 2 3
1 3 4
2 3 2
1
1
 
Sample Output
1
-1
 
 
题目大意:这个题目的变量比较多,所以比较恶心啦。不过也就是dijkstra的模板问题~
也是给了起点和终点然后找出最短路。这里有一个小技巧就是虚拟起点为"0",把0到任一个真正的起点的距离置为0,到其他点为无穷大,这样可以节省很多时间!!
还有一个要注意的就是这个路是单向的,今天刚过了英语四级,看着英文题目觉得还可以了哈~(*^__^*) 嘻嘻……
 
 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int node[],map[][],n,Min;
const int INF=; void dijkstra()
{
int vis[]= {};
int tm=,m;
node[tm]=;
vis[tm]=;
for(int i = ; i <= n; i++)
node[i] = INF;
for (int k=; k<=n; k++)
{
Min=INF;
for (int i=; i<=n; i++)
if (!vis[i])
{
if (node[i]>map[tm][i]+node[tm])
node[i]=map[tm][i]+node[tm];
if (Min>node[i])
{
Min=node[i];
m=i;
}
}
vis[m]=;
tm=m;
}
} int main ()
{
int m,s;
while (~scanf("%d%d%d",&n,&m,&s))
{
memset(map, INF, sizeof(map));
for (int i=; i<=m; i++)
{
int p,q,t;
cin>>p>>q>>t;
if (map[p][q]>t)
map[p][q]=t;
}
int w,cost;
cin>>w;
for (int i=; i<=w; i++)
{
scanf ("%d",&cost);
map[][cost]=;
}
dijkstra();
if(node[s] ==INF)
printf("-1\n");
else
printf("%d\n", node[s]);
}
return ;
}

hdu 2680 Choose the best route (dijkstra算法 最短路问题)的更多相关文章

  1. hdu 2680 Choose the best route

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2680 Choose the best route Description One day , Kiki ...

  2. hdu 2680 Choose the best route (dijkstra算法)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2680 /************************************************* ...

  3. hdu 2680 Choose the best route 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目意思:实质就是给定一个多源点到单一终点的最短路. 卑鄙题---有向图.初始化map时 千万不 ...

  4. HDU 2680 Choose the best route(SPFA)

    Problem DescriptionOne day , Kiki wants to visit one of her friends. As she is liable to carsickness ...

  5. HDU 2680 Choose the best route(多起点单终点最短路问题)题解

    题意:小A要乘车到s车站,他有w个起始车站可选,问最短时间. 思路:用Floyd超时,Dijkstra遍历,但是也超时.仔细看看你会发现这道题目好像是多源点单终点问题,终点已经确定,那么我们可以直接转 ...

  6. HDU 2680 Choose the best route 最短路问题

    题目描述:Kiki想去他的一个朋友家,他的朋友家包括所有的公交站点一共有n 个,一共有m条线路,线路都是单向的,然后Kiki可以在他附近的几个公交站乘车,求最短的路径长度是多少. 解题报告:这道题的特 ...

  7. HDU 2680 最短路 迪杰斯特拉算法 添加超级源点

    Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  8. 【hdu 2544最短路】【Dijkstra算法模板题】

    Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...

  9. HDU 2068 Choose the best route

    http://acm.hdu.edu.cn/showproblem.php?pid=2680 Problem Description One day , Kiki wants to visit one ...

随机推荐

  1. HDU 2163 Palindromes

    http://acm.hdu.edu.cn/showproblem.php?pid=2163 Problem Description Write a program to determine whet ...

  2. java 基础 --匿名内部类-008

    不全代码 interface Inter(){void show();} class Outer{补全代码} class OuterDemo{ public static void main(Stri ...

  3. BZOJ 1597 土地购买(斜率优化DP)

    如果有一块土地的长和宽都小于另一块土地的长和宽,显然这块土地属于“赠送土地”. 我们可以排序一下将这些赠送土地全部忽略掉,一定不会影响到答案. 那么剩下的土地就是长递减,宽递增的.令dp[i]表示购买 ...

  4. hdu 1690 Bus System (最短路径)

    Bus System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. AtCoder Regular Contest 103 题解

    C-/\/\/\ #include<algorithm> #include<iostream> #include<cstdlib> #include<ioma ...

  6. CC TSUBSTR:Substrings on a Tree——题解

    https://www.codechef.com/problems/TSUBSTR https://vjudge.net/problem/CodeChef-TSUBSTR 给一棵点权为字母的树,你只能 ...

  7. LOJ2350:[JOI2017/2018决赛]月票购买——题解

    https://loj.ac/problem/2350 比较简单的题,为什么我实现得这么sb? 第一个包其实已经给了提示(第一个包的解法就是在S->T所有最短路径上的所有点到V的最短路的最小值. ...

  8. [bzoj] 3673 3674 可持久化并查集 || 可持久化数组

    原题 加强版 题意: 可持久化并查集模板-- 题解: 用可持久化线段树维护一个可持久化数组,来记录每一次操作后的状态. 不能用路径压缩,但是要按置合并,使复杂度保证在O(log) #include&l ...

  9. BZOJ3832 [Poi2014]Rally 【拓扑序 + 堆】

    题目链接 BZOJ3832 题解 神思路orz,根本不会做 设\(f[i]\)为到\(i\)的最长路,\(g[i]\)为\(i\)出发的最长路,二者可以拓扑序后\(dp\)求得 那么一条边\((u,v ...

  10. Visual Studio 2010如何利用宏

    最近在做后台代码的拆分,由于机器升级,原来装的添加注释的插件不能用了. 看来只有自己想办法了,看了下利用宏添加注释与把项目展开.折叠的方式: 参考了以下几个内容: 1.Visual Studio 20 ...