Silver Cow Party POJ - 3268 (固定起点和固定终点的最短路)
思路:有向图。假设在X牧场参加party,从X回家的时候,以X为起点,使用一次Dijkstra算法即可。难点在于去X参加party的最短路如何求解。
这时候我们可以反向建图,即把原来有向图的方向全部反向,形成一幅新的有向图G',此时再对G'使用一次以X为起点的Dijkstra算法即
可求得原图G中其他各点以X为终点的最短路径。
1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<cmath> 5 #include<set> 6 #include<algorithm> 7 #include<cstdio> 8 #include<map> 9 #include<cstring> 10 11 #define INF 1000000000 12 13 using namespace std; 14 15 int dis1[1010]; // 正向最短路 (回家的最短路) 16 int dis2[1010]; // 反向最短路 (去party的最短路) 17 int vis[1010]; 18 int g1[1010][1010]; // 正向建图 19 int g2[1010][1010]; // 反向建图 20 int N, M, X; 21 22 void dijkstra(int start, int dis[], int g[1010][1010]) 23 { 24 for(int i = 1; i <= N; ++i) 25 { 26 dis[i] = INF; 27 vis[i] = 0; 28 } 29 30 dis[start] = 0; 31 while(1) 32 { 33 int mark = -1, minDis = INF; 34 for(int i = 1; i <= N; ++i) 35 { 36 if(!vis[i] && dis[i] < minDis) 37 { 38 minDis = dis[i]; 39 mark = i; 40 } 41 } 42 if(mark == -1) 43 break; 44 vis[mark] = 1; 45 for(int i = 1; i <= N; ++i) 46 { 47 if(!vis[i]) 48 dis[i] = min(dis[i], dis[mark]+g[mark][i]); 49 } 50 51 } 52 53 54 55 } 56 57 int main() 58 { 59 scanf("%d %d %d", &N, &M, &X); 60 for(int i = 1; i <= N; ++i) 61 { 62 for(int j = 1; j <= N; ++j) 63 { 64 if(i == j) 65 g1[i][j] = g2[i][j] = 0; 66 else 67 g1[i][j] = g2[i][j] = INF; 68 } 69 } 70 for(int i = 1; i <= M; ++i) 71 { 72 int a, b, cost; 73 scanf("%d %d %d", &a, &b, &cost); 74 g1[a][b] = cost; 75 g2[b][a] = cost; 76 } 77 78 dijkstra(X, dis1, g1); 79 dijkstra(X, dis2, g2); 80 81 82 int ans = -1; 83 84 for(int i = 1; i <= N; ++i) 85 { 86 if(dis1[i] + dis2[i] > ans) 87 ans = dis1[i] + dis2[i]; 88 } 89 90 printf("%d\n", ans); 91 92 return 0; 93 }
转载于:https://www.cnblogs.com/FengZeng666/p/11405351.html
Silver Cow Party POJ - 3268 (固定起点和固定终点的最短路)相关推荐
- D - Silver Cow Party POJ - 3268
D - Silver Cow Party POJ - 3268 dijkstra 是 O(n2),堆优化一下, O(nlogn) 对每个点跑一次 dj, 取 max(dis(x->i)+dis( ...
- Silver Cow Party POJ - 3268(正反建图+dijkstra)
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1-N is going to attend the big cow ...
- Silver Cow Party POJ - 3268(dijkstra+反向交换)
题意: 求X到某点来回路程的最短路的最大值. 模板更新中... 题目 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered ...
- Silver Cow Party POJ - 3268
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big co ...
- POJ 3268 迪杰斯特拉图论 置换找最短路
题目:https://vjudge.net/problem/POJ-3268 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numb ...
- Silver Cow Party (POJ - 3268 )
Silver Cow Party (POJ - 3268 ) 这道题是我做的最短路专题里的一道题,但我还没做这个,结果比赛就出了,真是.......... 题目: One cow from each ...
- POJ 3268 Silver Cow Party (最短路径)
POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...
- [POJ](3268)Silver Cow Party ---最短路径(图)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 23762 Accepted: 1085 ...
- POJ 3268:Silver Cow Party 求单点的来回最短路径
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15989 Accepted: 7303 ...
最新文章
- 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)
- JS数组转字符串和字符串转数组
- 如何在鼠标hover时改变标注的样式
- 博弈论笔记:谈判与讨价还价
- .net webconfig 配置说明123
- sql trim()函数去掉两头空格
- 程序员修神之路--设计一套RPC框架并非易事
- 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块
- Response响应方法详解
- 在windows文件系统中加右键执行程序
- python3.8下载request_python3 requests 安装包下载安装[windows]
- 金融量化之华泰多因子估值类显著性和IC值计算
- iphone开发每日一练【2011-10-04】
- 【Small Problem In Work】word 大括号后面的公式对不齐的问题
- 你不知道的JavaScript APIs
- 华为未来是铺满鲜花还是荆棘遍布?
- Segmentation fault (core dumped) 和double free or corruption (out)Aborted (core dumped)
- 自动驾驶数据闭环系列之一:理想丰满,现实骨感
- 魔力 java下载安装,UBNT EdgeMAX EdgeRouter ERPoE-5 POE+ UAP-AC-PRO开箱及安装调试
- 健身耳机哪些品牌好?健身运动耳机推荐
热门文章
- 面向对象程序设计 第六次作业
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)...
- jquery radiobutton使用
- asp.Net_图片上传的一个类库的源码
- unreported exception java.lang.Exception; must be caught or declared to be thrown
- wine应用运行后字体都是问号
- QuorumPeerMain数量可否和HRegionServer节点数量不一致?
- 图表达相关书书籍调研
- SVM推导过程及SMO详细求解过程(转载+自己笔记)
- Python操作Redis中的hash