hdu 2680 Choose the best route (dijkstra算法)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2680
- /************************************************************************/
- /*
- hdu Arbitrage
- dijkstra算法
- 题目大意:dijkstra算法,求点与点之间最短距离。因为此题的起始点不定,所以可用
- 反向图来求得,终点确定,从终点出发,dijkstra算法,求出其他点到终点最小距离。
- 本题数据量较大,用floyd算法超时。
- */
- /************************************************************************/
- #include <cstdio>
- #include <cstring>
- #include <string>
- #include <map>
- #include <algorithm>
- using namespace std;
- #define MIN(a,b) a<b?a:b
- #define MAX 0xfffffff
- const int N = ;
- int maps[N][N];
- int dj[N],vis[N];
- int m,n,s,w,num,min_num;
- void build_map()
- {
- int p,q,t;
- for (int i = ; i <= n; i++)
- for (int j = i; j <= n; j++)
- maps[i][j] = maps[j][i] = ((i==j)?:MAX);
- for (int i = ; i <= m; i++)
- {
- scanf("%d%d%d",&p,&q,&t);
- if(maps[q][p] > t) maps[q][p] = t;//这里注意构建反向图
- }
- for (int i = ; i <= n; i++)
- dj[i] = MAX;
- }
- /*
- //此floyd算法超时
- void floyud()
- {
- for (int k = 1; k <= n; k++)
- {
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= n; j++)
- maps[i][j] = MIN(maps[i][j],maps[i][k] + maps[k][j]);
- }
- }
- */
- void DJ()
- {
- int cur = s;
- int next,min;
- dj[cur] = ;
- while()
- {
- min = MAX;
- vis[cur] = ;
- for (int i = ; i <= n; i++)
- {
- if (vis[i] == )continue;
- if (dj[i] > dj[cur] + maps[cur][i])
- dj[i] = dj[cur] + maps[cur][i];
- if (dj[i] < min)
- {
- min = dj[i];
- next = i;
- }
- }
- if ( min == MAX)break;
- cur = next;
- }
- }
- int main()
- {
- while(scanf("%d%d%d",&n,&m,&s)!= EOF )
- {
- build_map();
- memset(vis,,sizeof(vis));
- DJ();
- min_num = MAX;
- scanf("%d",&w);
- while(w--)
- {
- scanf("%d",&num);
- if ( dj[num] < min_num)
- min_num = dj[num];
- }
- if (min_num == MAX)
- printf("-1\n");
- else printf("%d\n",min_num);
- }
- return ;
- }
hdu 2680 Choose the best route (dijkstra算法)的更多相关文章
- hdu 2680 Choose the best route (dijkstra算法 最短路问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 Choose the best route Time Limit: 2000/1000 MS ( ...
- hdu 2680 Choose the best route
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2680 Choose the best route Description One day , Kiki ...
- hdu 2680 Choose the best route 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目意思:实质就是给定一个多源点到单一终点的最短路. 卑鄙题---有向图.初始化map时 千万不 ...
- HDU 2680 Choose the best route(SPFA)
Problem DescriptionOne day , Kiki wants to visit one of her friends. As she is liable to carsickness ...
- HDU 2680 Choose the best route(多起点单终点最短路问题)题解
题意:小A要乘车到s车站,他有w个起始车站可选,问最短时间. 思路:用Floyd超时,Dijkstra遍历,但是也超时.仔细看看你会发现这道题目好像是多源点单终点问题,终点已经确定,那么我们可以直接转 ...
- HDU 2680 Choose the best route 最短路问题
题目描述:Kiki想去他的一个朋友家,他的朋友家包括所有的公交站点一共有n 个,一共有m条线路,线路都是单向的,然后Kiki可以在他附近的几个公交站乘车,求最短的路径长度是多少. 解题报告:这道题的特 ...
- HDU 2680 最短路 迪杰斯特拉算法 添加超级源点
Choose the best route Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 【hdu 2544最短路】【Dijkstra算法模板题】
Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...
- HDU 2068 Choose the best route
http://acm.hdu.edu.cn/showproblem.php?pid=2680 Problem Description One day , Kiki wants to visit one ...
随机推荐
- ROS知识(15)----Actionlib的使用(一)
Actionlib是ROS非常重要的库,像执行各种运动的动作,例如控制手臂去抓取一个杯子,这个过程可能复杂而漫长,执行过程中还可能强制中断或反馈信息,这时Actionlib就能大展伸手了. 1.原理 ...
- 917:Knight Moves
题目链接:http://noi.openjudge.cn/ch0205/917/ 原题应该是hdu 1372 总时间限制: 1000ms 内存限制: 65536kB 描述 BackgroundMr ...
- Eclipse和MyEclipse使用技巧--Eclipse各版本介绍
进入eclipse的下载官网 http://www.eclipse.org/downloads/ 发现,会有多种版本提供下载. 对于刚接触Java开发的初学者,在下载eclipse时,对官网上面提 ...
- 进程间通过intent传递数据失败
<activity android:name=".activity.CreateMessageActivity" android:pr ...
- Swift3 - compare方法之ComparisonResult说明
Swift3在实现两个对象比较时,引入了compare方法,其中,方法返回值ComparisonResult解释如下: ComparisonResult是一个枚举类型,包含了以下3个成员: 其中: q ...
- JavaScript Window Location 当前页面的地址
window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. Window Location window.location 对象在编写时可不使用 window ...
- iOS 如何写出更加严谨的应用
本文旨在介绍一些能够帮助大家避开一些开发误区的经验. 一: 在开发中,经常能够遇到共用同一个界面的情况,一般情况下,我们会根据传入的model去做数据处理和保存. 当然如果不存在复用的情况下,根本不需 ...
- A. Candy Bags
A. Candy Bags http://codeforces.com/problemset/problem/334/A time limit per test 1 second memory l ...
- 简单几步让CentOS系统时间同步(转)
在使用CentOS系统的时候,我们可能会遇到时间不准的问题,那我们如何解决这个我问题呢,下面就来教大家一个CentOS系统时间同步的方法,希望大家可以解决自己所存在的疑问. CentOS系统时间同步的 ...
- CentOS7.2安装python2.7.12
目前CentOS7.2自带的python版本是python2.7.5.由于yum这个软件需要系统自带的python工作. 如果冒然用自己安装的python替换掉系统自带的,可能造成yum不工作. 先安 ...