POJ:3268-Silver Cow Party
Silver Cow Party
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 26184 Accepted: 11963
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: N, M, and X
Lines 2..M+1: Line i+1 describes road i with three space-separated integers: Ai, Bi, 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.
解题心得:
- 有n个牛,每个牛要去牛x家开party,每个牛都只走最短路径,要求你输出哪只牛走的路程(来回)最远。
- 首先要明白的是边是单向边,然后考了一个思维,先按照原图,用牛x家为起点跑spfa可以得出每个牛开完party回家要走多远,然后将所有的边反向,同样从牛x家跑spfa,得出的就是每只牛从家去牛x家需要走多远,然后来回的路径求和就是一只牛要走的路程。得出最大值就行了。
#include <stdio.h>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = 1010;
bool vis[maxn];
int Time_to[maxn],Time_back[maxn],n,m,x,Time[maxn];
vector <pair <int,int> > ve_back[maxn],ve_to[maxn];
void spfa_back(int s) {
memset(Time_back,0x7f,sizeof(Time_back));
Time_back[s] = 0;
queue <int> qu;
qu.push(s);
while(!qu.empty()) {
int u = qu.front(); qu.pop();
vis[u] = false;
for(int i=0;i<ve_back[u].size();i++) {
pair <int,int> temp = ve_back[u][i];
int v = temp.first;
int d = temp.second;
if(Time_back[u] + d < Time_back[v]) {
Time_back[v] = Time_back[u]+d;
if(!vis[v]) {
qu.push(v);
vis[v] = true;
}
}
}
}
}
void spfa_to(int s) {
memset(vis,0,sizeof(vis));
memset(Time_to,0x7f,sizeof(Time_to));
Time_to[s] = 0;
queue <int> qu;
qu.push(s);
while(!qu.empty()) {
int now = qu.front(); qu.pop();
vis[now] = false;
for(int i=0;i<ve_to[now].size();i++) {
int v = ve_to[now][i].first;
int d = ve_to[now][i].second;
if(Time_to[now] + d < Time_to[v]) {
Time_to[v] = Time_to[now] + d;
if(!vis[v]) {
vis[v] = true;
qu.push(v);
}
}
}
}
for(int i=1;i<=n;i++) {
Time[i] = Time_to[i] + Time_back[i];
}
}
void get_ans() {
int Max = 0;
for(int i=1;i<=n;i++)
Max = max(Max,Time[i]);
printf("%d",Max);
}
int main() {
scanf("%d%d%d",&n,&m,&x);
for(int i=0;i<m;i++) {
int a,b,len;
scanf("%d%d%d",&a,&b,&len);
ve_to[b].push_back(make_pair(a,len));
ve_back[a].push_back(make_pair(b,len));
}
spfa_back(x);
spfa_to(x);
get_ans();
return 0;
}
POJ:3268-Silver Cow Party的更多相关文章
- Dijkstra算法:POJ No 3268 Silver Cow Party
题目:http://poj.org/problem?id=3268 题解:使用 priority_queue队列对dijkstra算法进行优化 #include <iostream> #i ...
- (poj)3268 Silver Cow Party 最短路
Description One cow ≤ N ≤ ) conveniently numbered ..N ≤ X ≤ N). A total of M ( ≤ M ≤ ,) unidirection ...
- 【POJ】3268 Silver Cow Party
题目链接:http://poj.org/problem?id=3268 题意 :有N头奶牛,M条单向路.X奶牛开party,其他奶牛要去它那里.每头奶牛去完X那里还要返回.去回都是走的最短路.现在问这 ...
- POJ 3268 Silver Cow Party (双向dijkstra)
题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...
- POJ 3268 Silver Cow Party 最短路
原题链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- 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——————【最短路、Dijkstra、反向建图】
Silver Cow Party Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- 图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12674 Accepted: 5651 ...
- poj 3268 Silver Cow Party
S ...
随机推荐
- Web前端开发规范(二)
3.HTML代码规范 .html文件必须存放在项目工程约定的目录中. .html文件的命名:以模块 + 功能的结合方式来命名,比如:newsList.html. 文档类型声明:HTML4中使用< ...
- Chromium源码系列一:Chromium简介及源代码获取和编译
Chromium源码系列一:Chromium简介及源代码获取和编译 Chromium简介 Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发行并开放源代码.C ...
- SPFieldLookupValue
//得到查阅项的值SPWeb web = site.OpenWeb();SPList list = web.Lists["DemoList"];SPListItem item = ...
- Azure CDN:氮气加速已开启,司机们请做好准备
在上一周,我们向各位小伙伴介绍了通过 Azure CDN 高级版服务为 HTTPS 应用加速的做法,漏掉的小伙伴可以点击这里穿越回去补课哦.那我们今天讲点什么呢?当然是 CDN 最重要的价值:改善应用 ...
- ALPS语言学校(西雅图)|ALPS Language School (Seattle)
http://www.swliuxue.com/school-3879.html 所属国家: 美国 所在省洲: 华盛顿州 所在城市: 华盛顿州 建校时间: 1992年 学校类型: 院校 学校类别: 私 ...
- 拼接sql语句时拼接空字符串报sql错误
先上代码(php): $id_card=""; $sql = "select * from people where id_card=".$id_card; 看 ...
- 软件的依赖关系:类图关系:is-a has-a use-a
基本描述: 类图关系:is-a has-a use-a: 依赖规则: 依赖倒置: 依赖注入: 接口隔离: 无环依赖: 稳定依赖: 依赖倒置描述: 底层抽象-->高层抽象 ^ ^ ...
- P3391 【模板】文艺平衡树(Splay)
Splay #include<cstdio> #include<algorithm> #include<iostream> using namespace std; ...
- barnes-hut算法 && Fast Multipole Methods算法
barnes-hut算法 http://arborjs.org/docs/barnes-hut Fast Multipole Methods算法 http://www.umiacs.umd.edu/~ ...
- JS常见内置对象和方法
JS中常用的内置对象:Array对象.Date对象.正则表达式对象.string对象.Global对象 Array对象中常用方法: concat() 表示把几个数组合并成一个数组join() 设 ...