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的时间.两牧场之 间最多 ...
随机推荐
- Hbuilder连接第3方模拟器(夜神)
http://www.bcty365.com/content-146-5148-1.html
- LCD驱动分析【转】
转自:http://blog.csdn.net/hanmengaidudu/article/details/21559153 1.S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 其 ...
- Vue.js写一个SPA登录页面的过程
技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cooki ...
- window server 2008 配置ftp并实现用户隔离
文件传输协议(FTP)是一个标准的网络协议,用于传输计算机文件从一台主机到另一台主机通过TCP为基础的网络,如互联网. -WIKI百科 好久没更新教程了, 今天更新一下博客,也不知道会不会有人看….本 ...
- H5移动端视频问题(苹果全屏播放问题等)
iphone上,手动.自动.窗口化等问题 iphone窗口化 解决方案: 通过canvas + video标签结合处理 原理: 获取video的原图帧,通过canavs绘制到页面. 我们一般在苹果上在 ...
- Mysql授权允许远程访问
MySQL Community Edition(GPL) 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库.缺省状态下,mysql的用户是没有远程访问的权 ...
- 看看PHP迭代器的内部执行过程
class myIterator implements Iterator { private $position = 0; private $array = array( "first_el ...
- curd 插件
1. Django项目启动 自动加载文件 制作启动文件 . 注册strak 在apps.py 类里面增加如下 def ready(self): from django.utils.module_loa ...
- 数据分析python应用到的ggplot(二)
还是优达学院的第七课 数据:https://s3.amazonaws.com/content.udacity-data.com/courses/ud359/hr_by_team_year_sf_la. ...
- 学习笔记----float后不与前面元素同行解决办法。
<li>文本<span> 16-08-17</span></li> 当非float的元素和float的元素在一起的时候(如上代码), 如果非float元 ...