SPFA cojs 176. [USACO Feb07] 奶牛聚会
cojs 176. [USACO Feb07] 奶牛聚会
★☆ 输入文件:sparty.in 输出文件:sparty.out 简单对比
时间限制:3 s 内存限制:16 MB
N(1 ≤ N ≤ 1000)个农场中的每个农场都有一只奶牛去参加位于第X个农场的聚会.共有M (1 ≤ M ≤ 100,000)条单向的道路,每条道路连接一对农场.通过道路i会花费Ti (1 ≤ Ti ≤ 100)的时间.
作为参加聚会的奶牛必须走到聚会的所在地(农场X).当聚会结束时,还要返回各自的农场.奶牛都是很懒的,她们想找出花费时间最少的路线.由于道路都是单向的,所有她们前往农场X的路线可能会不同于返程的路线.
Of all the cows, what is the longest amount of time a cow must spend walking to the party and back? 对于所有参加聚会的奶牛,找出前往聚会和返程花费总时间最多的奶牛,输出这只奶牛花费的总时间.
输入格式:
- 第1行:三个用空格隔开的整数.
第2行到第M+1行,每行三个用空格隔开的整数:Ai, Bi,以及Ti.表示一条道路的起点,终点和需要花费的时间.
输出格式:
- 唯一一行:一个整数: 所有参加聚会的奶牛中,需要花费总时间的最大值.
样例输出:
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
样例输入:
10
样例说明:
共有4只奶牛参加聚会,有8条路,聚会位于第2个农场.
第4只奶牛可以直接到聚会所在地(花费3时间),然后返程路线经过第1和第3个农场(花费7时间),总共10时间.
#define N 100100
#include<cstring>
#include<iostream>
using namespace std;
#include<cstdio>
int que[];
int head1[],head2[];
struct Edge{
int v,last,w;
}edge1[N],edge2[N];
int t1=,t2=,n,m,x;
int dis1[],dis2[],ans=;
void add_edge1(int u,int v,int w)
{
++t1;
edge1[t1].v=v;
edge1[t1].w=w;
edge1[t1].last=head1[u];
head1[u]=t1;
}
void add_edge2(int u,int v,int w)
{
++t2;
edge2[t2].v=v;
edge2[t2].w=w;
edge2[t2].last=head2[u];
head2[u]=t2;
}
void input()
{
scanf("%d%d%d",&n,&m,&x);
for(int i=;i<=m;++i)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add_edge1(u,v,w);
add_edge2(v,u,w);
}
}
void SPFA1()
{
bool flag[]={};
memset(flag,false,sizeof(flag));
int head=,tail=;
que[++tail]=x;
flag[x]=true;
memset(dis1,,sizeof(dis1));
dis1[x]=;
while(head<tail)
{
++head;
int p=que[head];
flag[p]=false;
for(int l=head1[p];l;l=edge1[l].last)
{
if(dis1[edge1[l].v]>dis1[p]+edge1[l].w)
{
dis1[edge1[l].v]=dis1[p]+edge1[l].w;
if(!flag[edge1[l].v])
{
++tail;
que[tail]=edge1[l].v;
flag[edge1[l].v]=true;
} }
} }
}
void SPFA2()
{
bool flag[]={};
memset(flag,false,sizeof(flag));
int head=,tail=;
memset(que,,sizeof(que));
que[++tail]=x;
flag[x]=true;
memset(dis2,,sizeof(dis2));
dis2[x]=;
while(head<tail)
{
++head;
int p=que[head];
flag[p]=false;
for(int l=head2[p];l;l=edge2[l].last)
{
if(dis2[edge2[l].v]>dis2[p]+edge2[l].w)
{
dis2[edge2[l].v]=dis2[p]+edge2[l].w;
if(!flag[edge2[l].v])
{
++tail;
que[tail]=edge2[l].v;
flag[edge2[l].v]=true;
} }
} }
}
int main()
{
freopen("sparty.in","r",stdin);
freopen("sparty.out","w",stdout);
input();
SPFA1();
SPFA2();
for(int i=;i<=n;++i)
ans=max(ans,dis1[i]+dis2[i]);
printf("%d\n",ans);
fclose(stdin);fclose(stdout);
return ;
}
SPFA cojs 176. [USACO Feb07] 奶牛聚会的更多相关文章
- cogs 176. [USACO Feb07] 奶牛聚会 dijkstra
176. [USACO Feb07] 奶牛聚会 ★☆ 输入文件:sparty.in 输出文件:sparty.out 简单对比时间限制:3 s 内存限制:16 MB 译: zqzas N ...
- 176. [USACO Feb07] 奶牛聚会
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...
- 157. [USACO Nov07] 奶牛跨栏
157. [USACO Nov07] 奶牛跨栏(点击转到COGS) 输入文件:hurdles.in 输出文件:hurdles.out 时间限制:1 s 内存限制:128 MB 译 by CmY ...
- cogs 141. [USACO Jan08] 奶牛的选举
141. [USACO Jan08] 奶牛的选举 ★ 输入文件:elect.in 输出文件:elect.out 简单对比时间限制:1 s 内存限制:16 MB 在推翻了Farmer J ...
- 题解 [USACO Mar08] 奶牛跑步
[USACO Mar08] 奶牛跑步 Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所 ...
- cogs157. [USACO Nov07] 奶牛跨栏 x
157. [USACO Nov07] 奶牛跨栏 ★★ 输入文件:hurdles.in 输出文件:hurdles.out 简单对比时间限制:1 s 内存限制:128 MB 译 by Cm ...
- 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)
157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in 输出文件:hurdles.out 简单对比 时间限制:1 s 内存限制:128 MB 译 by CmYkRg ...
- usaco 地震 && 奶牛观光
Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...
- usaco 安慰奶牛
Description 约翰有N个牧场,编号依次为1到N.每个牧场里住着一头奶牛.连接这些牧场的有P条 道路,每条道路都是双向的.第j条道路连接的是牧场Sj和Ej,通行需要Lj的时间.两牧场之 间最多 ...
随机推荐
- Tomcat参数调优包括日志、线程数、内存【转】
[Tomcat中日志打印对性能测试的影响] 一般都提供了这样5个日志级别: ▪ Debug ▪ Info ▪ Warn ▪ Error ▪ Fatal 由于性能测试需要并发进行压力测试,如果日志级别是 ...
- 用Centos7搭建小微企业Samba文件共享服务器【转】
转自 用Centos7搭建小微企业Samba文件共享服务器 - 今日头条(www.toutiao.com)http://www.toutiao.com/i6436937837660078593/ 最近 ...
- angular项目中使用ngSemantic
npm install ng-semantic --save npm install jquery --save 下载 Official Semantic UI bundle ( .zip ) fro ...
- Nginx服务安全设置和参数调优
1.添加参数隐藏Nginx版本号 vim /application/nginx/conf/nginx.conf #http标签下添加 server_tokens off; #测试 [root@cobb ...
- 用dom4j操作xml文件
XML的全称是eXtensible Markup Language,即“可扩展标记语言”.XML文件的作用主要是数据存储,文件配置,数据传输. html与xml的区别是:①html语法松散,xml语法 ...
- PTP简介
PTP简介 在通信网络中,许多业务的正常运行都要求网络时钟同步,即整个网络各设备之间的时间或频率差保持在合理的误差水平内.网络时钟同步包括以下两个概念: l 时间同步:也叫相 ...
- POJ 1511 Invitation Cards(Dijkstra(优先队列)+SPFA(邻接表优化))
题目链接:http://poj.org/problem?id=1511 题目大意:给你n个点,m条边(1<=n<=m<=1e6),每条边长度不超过1e9.问你从起点到各个点以及从各个 ...
- Lab 4 in Tornado
反正也没给CSS,自己改了下样式…… 效果: 题目给的验证信用卡号码规则不太全,万事达的卡第二位必须是1~5,另外其实visa号码也有13位的……要兼容这个的话只要把正则改成'^4([0-9]{12, ...
- 仿微信小红圈消息提示App消息红圆点提示
代码: <div class="wrap"> <div class="img"></div> <div class=& ...
- php将长字符串拆分为指定最大宽度的字符串数组
/** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...