POJ 3268 sliver cow party
来源:互联网 发布:餐饮订餐软件 编辑:程序博客网 时间:2024/05/19 22:24
题目:
奶牛们分别从n个农场前往x地开派对,有m条路线把n个农场相连,路是单向的。
奶牛们从所在的地方用最短路径走到x,再用最短的路径走回来。求出路径最长的奶牛要花费多长时间。
第一行输入n,m,x。随后的m+1行输入a,b,t。从a地到b地花费时间t。
思路:
确定了x点,单源最短路问题。首先用dijkstra算法,把x点到其他所有点的最短距离存储在数组中。然后把所有的路反转一下,再用dijkstra算法,把x点到其他所有点的最短距离存储在数组中,此时这个数组代表的是其他点到x点的最短距离。再加一下,找到最大的,结束。
AC情况:
代码:
#include<iostream>#include<algorithm>using namespace std;#define maxn 1005#define INF 0x3f3f3f3fint i, j;int map[maxn][maxn], n;int d[maxn], d2[maxn];void dijkstra(int x) { int visit[maxn],i,j,min,next=x; memset(visit, 0, sizeof(visit)); for (i = 1; i <= n; i++) d[i] = map[x][i]; visit[x] = 1; for (i = 2; i <= n; i++) { min = INF; for (j = 1; j <= n; j++) { if (!visit[j] && d[j] < min) { min = d[j]; next = j; } } visit[next] = 1; for (j = 1; j <= n; j++) { if (!visit[j] && d[j] > d[next] + map[next][j]) d[j] = d[next] + map[next][j]; } }}int main() { int m, x; int a, b, t; scanf_s("%d%d%d", &n, &m, &x); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { if (i == j) map[i][j] = 0; else map[i][j] = INF; } } while (m--) { scanf_s("%d%d%d", &a, &b, &t); map[a][b] = t; } dijkstra(x); for (i = 1; i <= n; i++) d2[i] = d[i]; //d2[i]表示x到点i的最短路 for (i = 1; i <= n; i++) { for (j = i + 1; j <= n; j++) { int t; t = map[j][i]; map[j][i] = map[i][j]; map[i][j] = t; } } dijkstra(x); //此时 d[i]表示点i到x的最短路 int ans = 0; for (i = 1; i <= n; i++) if (i != x) ans = max(ans, d2[i] + d[i]); printf("%d\n", ans); return 0;}
阅读全文
0 0
- POJ 3268 sliver cow party
- POJ3268 Sliver Cow Party SPFA
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268--Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party
- poj 3268 Silver Cow Party
- application/x-www-form-urlencode
- 9.2 游戏 2714(9.4)
- HTML5+js的两种轮播图(静态获取图片方法和动态获取图片)
- 读书笔记-穿越计算机的迷雾
- 文本每三行合并成一行
- POJ 3268 sliver cow party
- cuda矩阵转置
- 简明YAML教程
- C++个人编程标准(字符、指针、字符串)
- 用JS实现系统登录页的登录和验证
- Connection: close(http协议短链接)和Connection: keep-alive(http协议长链接)有什么区别?
- JSP九大内置对象的作用和用法总结
- cf 389D Fox and Minimal path 【构造】
- 数据结构(c语言)线性表-顺序表