POJ 3268 Silver Cow Party(dijkstra)
2014-04-10 18:41
337 查看
题意:
有N(1≤N≤1000)个农场,编号为1~N,每个农场有一头奶牛。这些奶牛将参加在#X(1≤X
≤N)号农场举行的派对。这N 个农场之间有M(1≤M≤100,000)条单向路,通过第i 条路将需要
花费Ti(1≤Ti≤100)单位时间。
每头奶牛必须走着去参加派对。派对开完以后,返回到它的农场。每头奶牛都很懒,所以总
是选择一条具有最短时间的最优路。每头奶牛的往返路线是不一样的,因为所有的路都是单向的。
对所有的奶牛来说,花费在去派对的路上和返回农场的最长时间是多少?
思路:
读不懂题意略坑。。。
用矩阵+dijkstra来实现,若是反向的话,则转置矩阵,map[i][j]原本的值就变成了map[j][i]
有N(1≤N≤1000)个农场,编号为1~N,每个农场有一头奶牛。这些奶牛将参加在#X(1≤X
≤N)号农场举行的派对。这N 个农场之间有M(1≤M≤100,000)条单向路,通过第i 条路将需要
花费Ti(1≤Ti≤100)单位时间。
每头奶牛必须走着去参加派对。派对开完以后,返回到它的农场。每头奶牛都很懒,所以总
是选择一条具有最短时间的最优路。每头奶牛的往返路线是不一样的,因为所有的路都是单向的。
对所有的奶牛来说,花费在去派对的路上和返回农场的最长时间是多少?
思路:
读不懂题意略坑。。。
用矩阵+dijkstra来实现,若是反向的话,则转置矩阵,map[i][j]原本的值就变成了map[j][i]
#include <iostream> #include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <string.h> using namespace std; const int INF = 1e9; const int N = 1010; int map ,dis ,vis ,go ; int n,m,x; void dij() { int i,j; for(i = 1; i<= n ;i++) { dis[i] = INF; vis[i] = 0; } for(i=1;i<=n;i++) dis[i]=map[x][i]; dis[x] = 0; vis[x] = 1; for(i=1;i<n;i++) { int t = INF; int p; for(j=1;j<=n;j++) { if(!vis[j]&&t>dis[j]) { t=dis[j]; p=j; } } vis[p]=1; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]>dis[p]+map[p][j]) dis[j] = dis[p] + map[p][j]; } } } void tra() { int t,i,j; for(i = 1; i <= n; i++) for(j = 1; j <= i; j++) { t = map[i][j]; map[i][j] = map[j][i]; map[j][i] = t; } } int main() { int i,j,t,u,v,c; while(scanf("%d%d%d",&n,&m,&x) != EOF) { memset(map,0,sizeof(map)); for(i = 1; i <= n; i++) for(j = 1; j <= n; j++ ) map[i][j] = INF; while(m--) { scanf("%d%d%d",&u,&v,&c); map[u][v] = c; } dij(); for(i = 1; i <= n; i++) go[i] = dis[i]; tra(); dij(); int ans = 0; for(i = 1; i<= n; i++) if(dis[i] + go[i] > ans) ans = dis[i] + go[i]; printf("%d\n",ans); } return 0; }
相关文章推荐
- 嵌入式 适合arm的内存泄漏检测方案
- 第五周作业——有向图邻接表表示及反向图构造
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- 搭建Android UI Testing自动化测试开发环境
- printf——动态指定输出格式长度
- 关于go语言des加解密算法
- Unity3d教程Mecanim 动画体系赋予人物生命混合树 (Blend Tree)
- JavaWeb学习篇之----Servlet过滤器Filter和监听器
- bat 记录
- 浅谈javascript函数,变量声明及作用域
- file max file nr
- 【返回顶部】 功能
- 排序算法性能分析
- PHP读文件的一个乱码问题
- 每位设计师都应该拥有的50个CSS代码片段
- 结构体之柔性数组
- javaxemail发送excel表格 工具类(不断更新中)
- vi 使用方法
- Google Protocol Buffers浅析(三)
- IDL plot