Silver Cow Party
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 23762   Accepted: 10850

Description

One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road i requires Ti (1 ≤ Ti ≤ 100) units of time to traverse.

Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow's return route might be different from her original route to the party since roads are one-way.

Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?

Input

Line 1: Three space-separated integers, respectively: NM, and X 
Lines 2..M+1: Line i+1 describes road i with three space-separated integers: AiBi, and Ti. The described road runs from farm Ai to farm Bi, requiring Ti time units to traverse.

Output

Line 1: One integer: the maximum of time any one cow must walk.

Sample Input

4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3

Sample Output

10

Hint

Cow 4 proceeds directly to the party (3 units) and returns via farms 1 and 3 (7 units), for a total of 10 time units.
解题新知:
①:题意:一头牛x在家举办party,其他牛要去找它家参加聚会,牛儿们都比较懒,要走最短的路线才行,而且当它们参加完聚会后还要会自己的家,并且还是走最短的路线。问:那头牛走的最短路径是所有牛中最大的?
②:思路:求两次最短路径,去的时候是i到x的最短路径,来的时候是x到i的最短路径。那么我们可以在求完去的时候的最短路径后,翻转map,将map的行和列对换(即map[i][x]->map[x][i])。最后将每头牛去的dist[i]和来的distBack[i]相加,求最大即可。好题!
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
int n,m,x;
int mmap[1005][1005];
bool vis[1005];
bool visback[1005];
int dist[1005];
int distback[1005];
using namespace std;
void dijkstra()
{for(int i=1;i<=n;i++){dist[i]=mmap[i][x];distback[i]=mmap[x][i];}int k;int mmin;for(int i=1;i<=n;i++){mmin=INF;for(int j=1;j<=n;j++){if(!vis[j] && dist[j]<mmin){mmin=dist[j];k=j;}}vis[k]=true;for(int j=1;j<=n;j++){if(!vis[j]&&dist[k]+mmap[j][k]<dist[j])dist[j]=dist[k]+mmap[j][k];}}for(int i=1;i<=n;i++){mmin=INF;for(int j=1;j<=n;j++){if(!visback[j] && distback[j]<mmin){mmin=distback[j];k=j;}}visback[k]=true;for(int j=1;j<=n;j++){if(!visback[j]&&distback[k]+mmap[k][j]<distback[j])distback[j]=distback[k]+mmap[k][j];}}
}
int main()
{int u,v,w;while(scanf("%d %d %d",&n,&m,&x)!=EOF){//memset(mmap,0x3f,sizeof(mmap));memset(dist,0,sizeof(dist));memset(distback,0,sizeof(distback));memset(vis,false,sizeof(vis));memset(visback,false,sizeof(vis));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j)mmap[i][j]=INF;elsemmap[i][j]=0;}}while(m--){scanf("%d %d %d",&u,&v,&w);if(w<mmap[u][v])mmap[u][v]=w;}dijkstra();int mmax=-1;for(int i=1;i<=n;i++){mmax=max(mmax,dist[i]+distback[i]);}printf("%d\n",mmax);}return 0;
}

转载于:https://www.cnblogs.com/WangMeow/p/7535979.html

[POJ](3268)Silver Cow Party ---最短路径(图)相关推荐

  1. POJ 3268 Silver Cow Party (最短路径)

    POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...

  2. POJ 3268 Silver Cow Party

    题目链接 题意 单向图,N - 1个牛去聚会,求所有牛去聚会和回家路径和的最大值 AC 很骚的操作 首先从派对的地方跑Dijkstra求出回家的最短路,然后将所有边翻转再次从聚会跑Dijkstra就是 ...

  3. POJ - 3268 Silver Cow Party(最短路)

    题目链接:点击查看 题目大意:给出n个点以及m条单项路径和一个点x,设从x点到i的距离及从i回到x点的距离分别为d1和d2,求d1+d2的最大值(1<=i<=n) 题目分析:看到这个题的第 ...

  4. POJ 3268 Silver Cow Party--正反Dijkstra

  5. 【POJ】3268 Silver Cow Party (将有向图的边反转)

    问题链接:http://poj.org/problem?id=3268 [问题描述] One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  6. 【POJ】3268 Silver Cow Party

    题目链接:http://poj.org/problem?id=3268 题意 :有N头奶牛,M条单向路.X奶牛开party,其他奶牛要去它那里.每头奶牛去完X那里还要返回.去回都是走的最短路.现在问这 ...

  7. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  8. POJ3268 Silver Cow Party(最短路径)

    题意: 每个农场有一头牛,现在要到农场x开派对,路径是单向的,要求开完派对后还要回到原农场,求所有牛的最短路径的最大值 要点: 就是一个定终点求最短路径的变形,现在已经知道终点,从终点回到原农场的最短 ...

  9. POJ 3268:Silver Cow Party 求单点的来回最短路径

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15989   Accepted: 7303 ...

最新文章

  1. php里面执行python,在php中执行python
  2. 网站排名优化需掌握四项基本要素
  3. 关于C#资源文件操作的总结
  4. Nginx在Windows平台的配置与使用
  5. 信息系统项目管理师-项目范围管理考点笔记
  6. Linux命令整合之find
  7. Android MotionEvent中getX()、getRawX()和getTop()的区别
  8. [转载]依赖注入那些事
  9. Slog76_用一个简单的游戏演示与数据库的交互(微信小程序之云开发-全栈时代6)...
  10. vscode中自动修复eslint的项目语法错误
  11. 记一次闲置电视盒子乐视C1S折腾entware
  12. 标签打印软件如何输出双面打印的文档
  13. 快乐、聪明和有用,你会如何选择?
  14. .native.prevent是什么意思?
  15. 在 GitHub 上玩转开源项目的 Code Review
  16. 读书笔记:遇见未知的自己
  17. 1026 程序运行时间
  18. 代价敏感学习初探 - 有偏损失函数设计
  19. [基础服务] 常用邮箱服务地址
  20. 连接共享文件夹时报错:发生系统错误 1219:不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接

热门文章

  1. python基础第三章选择结构答案-零基础学Python--------第3章 流程控制语句
  2. python爬虫原理-爬虫原理解析
  3. 学python工资高吗-我程序员年薪 80 万被亲戚鄙视不如在二本教书的博士生?
  4. python爬虫入门-Python 爬虫从入门到进阶之路(一)
  5. python读取txt数据-Python从文件中读取数据
  6. 如何自学python编程-零基础如何自学编程?
  7. python自学时间-Python中基本的日期时间处理的学习教程
  8. python web-Java web 和 Python web??
  9. python基础教程书籍推荐-小猿圈推荐Python入门书籍,不知道这些你就太low了。
  10. 用python画立体玫瑰花-Python 玫瑰花绘制