题目: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算法)的更多相关文章

  1. 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 ( ...

  2. hdu 2680 Choose the best route

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

  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. SpringBoot集成自定义HandlerMethodArgumentResolver

    传统SpringMVC集成自定义HandlerMethodArgumentResolver的方式为:http://www.cnblogs.com/yangzhilong/p/6282218.html ...

  2. python模块之HTMLParser(原理很大程度上就是对类构造的熟练运用)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser(原理很大程度上就是对类构造的熟练运用) import HTMLPar ...

  3. 转:Linux网卡驱动程序编写

    Linux网卡驱动程序编写 [摘自 LinuxAID] 工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大 ...

  4. &lt;图形图像,动画,多媒体&gt; 读书笔记 --- 音效

    音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号,通过音频编码,变成音频数字信号保存到某种格式文件里.在播放过程中在对音频文件解码,解码出的信号通过扬声器等设备就能够转成音波.音 ...

  5. Mac OS X上安装配置apache服务器

    说明:Mac在安装完成Mac系统的时候它已经自带了apache服务器,接下来就是配置和将它启动运行了.那么接下来要做的事情就是: 1.配置apache的配置文件 2.设置虚拟主机 启动并查看apach ...

  6. Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制

    前面八节 在这里 Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 在接下来的 几节里面 我们完成登录功能 打开页面 首先进入登录页面 只有登录成功了 才能进入管理 ...

  7. 内存问题的排查工具和方法– Clang的AddressSanitizer

    1 概述 Valgrind可以有效地监测处大多数内存问题,你肯定忍不住会想,既然c/c++的内存问题这么常见,为什么不在编译器中加入内存问题检测的功能呢? 很可惜,GCC中还目前还不支持内存检测,可喜 ...

  8. magento 为用户注册增加一个字段(转)

    步骤 I. 加一个occupation/title字段到用户注册页,差不多在register.html的54行,在email下方加一个Occupation显示代码 代码: <li>< ...

  9. .net获取当前url各种属性(文件名、参数、域名、端口等)的方法(转)

    假设当前页完整地址是:http://www.test.com:80/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www ...

  10. HTML页面中显示HTML标签<xmp>

    最近做东西遇到一个HTML页面中显示HTML标签的需求,比如要显示</span> 解决方法如下 HTML页面中显示HTML标签代码,可以使用<xmp>html标签内容</ ...