题目: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之actuator

    在springBoot中集成actuator可以很方便的管理和监控应用的状态. 暴露的Restful接口有: HTTP方法 路径 描述 鉴权 GET /autoconfig 查看自动配置的使用情况 t ...

  2. Leveldb 使用说明文档

    Leveldb 使用说明文档 原作者:Jeff Dean, Sanjay Ghemawat 翻译:乌合之众solym@sohu.com 英文原文地址https://rawgit.com/google/ ...

  3. Spring Cloud Dalston.SR5 BUG一记

    使用Dalston.SR5版本的Zuul时, 发现Ribbon重试不能切换服务实例, 换成Edgware.SR3,同样的配置可以切换实例进行重试 还有个不升级所有Spring Cloud组件的方法,仅 ...

  4. FlipViewDemo

    error: Resource entry white is already defined. error: Resource entry transparentBlack is already de ...

  5. nginx深入使用

    1. nginx使用命令 nginx -s stop --快速关闭Nginx,可能不保存相关信息,并迅速终止web服务. nginx -s quit --平稳关闭Nginx,保存相关信息,有安排的结束 ...

  6. ext3, ext4 和 reiserfs 文件系统性能对比

    : 创建空文件10000个的耗时 创建小文件,每个小文件使用512个blocks,一共创建10000个 创建一个2G文件的耗时 复制2G文件的耗时 删除2G大文件的耗时 删除10000个小文件的耗时 ...

  7. [转载]Error starting Sun's native2ascii:

    原文地址:Error starting Sun's native2ascii:作者:大一吧浪 Error starting Sun's native2ascii: at org.apache.tool ...

  8. java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作

    官方api教程:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started ...

  9. iOS应用之间的跳转

    app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...

  10. linux下开启https

    1.在线安装mod_ssl yum -y install mod_ssl 查看openssl 是否安装成功 rpm -qa |grep openssl 2.建立服务器密钥 openssl genrsa ...