题目


1631: [Usaco2007 Feb]Cow Party

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 491  Solved: 362
[Submit][Status]

Description

    农场有N(1≤N≤1000)个牛棚,每个牛棚都有1只奶牛要参加在X牛棚举行的奶牛派对.共有M(1≤M≤100000)条单向路连接着牛棚,第i条踣需要Ti的时间来通过.牛们都很懒,所以不管是前去X牛棚参加派对还是返回住所,她们都采用了用时最少的路线.那么,用时最多的奶牛需要多少时间来回呢?

Input

第1行:三个用空格隔开的整数.

第2行到第M+1行,每行三个用空格隔开的整数:Ai, Bi,以及Ti.表示一条道路的起点,终点和需要花费的时间.

Output

唯一一行:一个整数: 所有参加聚会的奶牛中,需要花费总时间的最大值.

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

样例说明:

共有4只奶牛参加聚会,有8条路,聚会位于第2个农场.

第4只奶牛可以直接到聚会所在地(花费3时间),然后返程路线经过第1和第3个农场(花费7时间),总共10时间.


题解


这一道题目,我们可以从x点spfa一遍得到回来的最短路,然后把所有边反过来再spfa一遍得到去的最短路,然后球最小值就好了!


代码


 #include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<queue>
#define inf 1000000000
#define maxn 1000+100
#define maxm 50000+100
#define ll long long
using namespace std;
inline ll read(){
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
return x*f;
}
struct edge{int from,go,next,w;}e[][*maxm];
int n,m,s,tot[],q[maxn],d[][maxn],head[][maxn];
bool v[maxn];
void ins(int k,int x,int y,int z){
e[k][++tot[k]].go=y;e[k][tot[k]].w=z;e[k][tot[k]].next=head[k][x];head[k][x]=tot[k];
}
void spfa(int k){
for(int i=;i<=n;++i) d[k][i]=inf;
memset(v,,sizeof(v));
int l=,r=,x,y;q[]=s;d[k][s]=;
while(l!=r){
x=q[++l];if(l==maxn)l=;v[x]=;
for(int i=head[k][x];i;i=e[k][i].next)
if(d[k][x]+e[k][i].w<d[k][y=e[k][i].go]){
d[k][y]=d[k][x]+e[k][i].w;
if(!v[y]){v[y]=;q[++r]=y;if(r==maxn)r=;}
}
}
}
int main(){
n=read();m=read();s=read();
while(m--){
int x=read(),y=read(),z=read();
ins(,x,y,z);ins(,y,x,z);
}
spfa();spfa();
int ans=;
for(int i=;i<=n;i++)ans=max(ans,d[][i]+d[][i]);
printf("%d\n",ans);
return ;
}

最新文章

  1. redis和memcached的区别(总结)
  2. SQL*Loader之CASE4
  3. IntelliJ_13_配置tomcat
  4. HDU 5038 Grade北京赛区网赛1005
  5. IOS RSA 加密方式
  6. What books does Bjarne Stroustrup suggest to master C++?
  7. RPC 原理的前生今世
  8. 练习PopupWindow弹出框之实现界面加载的时候显示弹出框到指定的view下面--两种延迟方法
  9. python-面向对象(四)——类成员的访问方式汇总
  10. yo bootstrap mui 使用对比
  11. 可重入与线程安全(Reentrancy and Thread-Safety)
  12. 为什么出现Wide character in print at a14.pl line 41
  13. How to use STA(sql tuning advisor)
  14. 《java.util.concurrent 包源码阅读》21 CyclicBarrier和CountDownLatch
  15. Java多线程编程—锁优化
  16. NVIDIA Geforce GT 730 OpenGL 图形显示异常花屏
  17. Docker快速入门(二)
  18. 一次 ElasticSearch 搜索优化
  19. 2018年Fintech金融科技关键词和入行互金从业必懂知识
  20. Flask Web中文教程

热门文章

  1. SQL Server索引进阶:第二级,深入非聚集索引
  2. 10条影响CSS渲染速度的写法与建议
  3. eclipse手动添加源码
  4. idea14 maven项目 jdk编译版本无法修改
  5. 关于jq操作table下多个type=radio的input的选中
  6. php 不能同时提交form
  7. 简明的例子讲解position:relative、float、overflow:hidden和inline-block
  8. 12-C语言字符串
  9. Oracle中SQL语句学习五(统计分组语句group by和having)
  10. Ubuntu离线安装软件包