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 ...
随机推荐
- OSI七层模型含义
应用层:由用户自己规定,只要形成的消息能与表示层接口.这包括各机互访协议,分布式数据库协议等. 表示层:是在满足用户需求的基础上,尽可能的节省传输费用而设置的.如文本压缩.常用词转换.加密.变更文件格 ...
- 修改Android系统关机动画
文件路径:frameworks\base\services\core\java\com\android\server\power\ShutdownThread.java 在beginShutdownS ...
- 快速排序c语言实现
#include <stdio.h> void quick_sort(int* a, int n) { ) return; int i,j,tmp,k; k = a[n/]; ,j = n ...
- Struts2_用ModelDriven接收参数
通过实现 ModelDriven 接口来接收请求参数,这种方法用的比较少,一般还是用前两种. 请求: <a href="user/user!add?name=xiaoer&ag ...
- springboot/springmvc转换器
常用的转换器 String转Date转换器(用于接受日期参数自动转换成Date类型便于后台数据处理) /** * 全局handler前日期统一处理 * @author zhanghang * @dat ...
- ubuntu安装rpm包,deb包等各种包
ubuntu下的各种包的安装方法 Ubuntu麒麟自带的包管理工具有apt-get,但是里面的软件包一般年代比较久远,源更新很慢,支持也很少.如果想安装一些比较新的包,可以尝试到PPA上去找找看,找到 ...
- cesium 实现路径漫游功能
功能:路径漫游. 详细:绘制多个路径,删除路径,漫游路径选择,路径漫游. ①绘制路径 ②保存路径 ③路径切换 ④路径漫游 ⑤路径删除 ⑥删除完成
- IOS OAuth授权分析
一.黑马微博 ---> 用户的微博数据1.成为新浪的开发者(加入新浪微博的开发阵营)* 注册一个微博帐号,登录http://open.weibo.com帐号:643055866@qq.com密码 ...
- 最长公共单词,类似LCS,(POJ2250)
题目链接:http://poj.org/problem?id=2250 解题报告: 1.状态转移方程: ; i<=len1; i++) { ; j<=len2; j++) { dp[i][ ...
- 表面积最小(POJ3536)
题目链接:http://poj.org/problem?id=3536 在体积固定的情况下,表面积最小时的长,宽,高. 这里枚举长,宽,根据体积计算高. #include <iostream&g ...