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 ...
随机推荐
- python反爬之网页局部刷新1
# ajax动态加载网页 # 怎样判断一个网页是不是动态加载的呢? # 查看网页源代码,如果源码中没有你要的数据,尝试访问下一页,当你点击下一页的时候,整个页面没有刷新, 只是局部刷新了,很大的可能是 ...
- 栅格那点儿事(四C)
栅格渲染之拉伸(Stretch) 现在我们知道如何在ArcGIS中渲染栅格数据了,但是还有一个常常会碰到的问题,尤其是在使用老版本的ArcGIS的时候,为啥我加了一个栅格数据进来,啥也看不见,是黑色的 ...
- Android Studio快捷键【Android学习入门】
Studio快捷键[Android学习入门]" title="Android Studio快捷键[Android学习入门]"> 提示 Ctrl+P方法参数提示 Ct ...
- check_mk 之 Check Parameters
配置检测参数有几下方法 1. Creating manual checks instead of inventorized checks (using the variable checks). 2. ...
- python3线程介绍02(线程锁的介绍:互斥、信号、条件、时间、定时器)
#!/usr/bin/env python# -*- coding:utf-8 -*- import threadingimport timeimport random # 1-互斥锁 Lock 同一 ...
- Spring Boot项目Circular view path问题解决
使用Spring Boot创建Spring MVC项目,访问url请求出现问题:Circular view path 1.问题描述 控制台打印: javax.servlet.ServletExcept ...
- UE4工具
COMMON CONTAINERS TARRAY (Engine\Source\Runtime\Core\Public\Containers\Array.h) TSET (Engine\Source\ ...
- Javascript作业—数组去重(要求:原型链上添加函数)
数组去重(要求:原型链上添加函数) <script> //数组去重,要求:在原型链上添加函数 //存储不重复的--仅循环一次 if(!Array.prototype.unique1){ A ...
- 【JavaScript 封装库】BETA 2.0 测试版发布!
/* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...
- Last_IO_Errno: 1062
主键冲突的错误 1062 模拟错误: 在主库上操作: create table test100(id int not null,name varchar(20),primary key(id) ...