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] 奶牛聚会的更多相关文章

  1. cogs 176. [USACO Feb07] 奶牛聚会 dijkstra

    176. [USACO Feb07] 奶牛聚会 ★☆   输入文件:sparty.in   输出文件:sparty.out   简单对比时间限制:3 s   内存限制:16 MB 译: zqzas N ...

  2. 176. [USACO Feb07] 奶牛聚会

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...

  3. 157. [USACO Nov07] 奶牛跨栏

    157. [USACO Nov07] 奶牛跨栏(点击转到COGS) 输入文件:hurdles.in   输出文件:hurdles.out 时间限制:1 s   内存限制:128 MB 译 by CmY ...

  4. cogs 141. [USACO Jan08] 奶牛的选举

    141. [USACO Jan08] 奶牛的选举 ★   输入文件:elect.in   输出文件:elect.out   简单对比时间限制:1 s   内存限制:16 MB 在推翻了Farmer J ...

  5. 题解 [USACO Mar08] 奶牛跑步

    [USACO Mar08] 奶牛跑步 Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所 ...

  6. cogs157. [USACO Nov07] 奶牛跨栏 x

    157. [USACO Nov07] 奶牛跨栏 ★★   输入文件:hurdles.in   输出文件:hurdles.out   简单对比时间限制:1 s   内存限制:128 MB 译 by Cm ...

  7. 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)

    157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in   输出文件:hurdles.out   简单对比 时间限制:1 s   内存限制:128 MB 译 by CmYkRg ...

  8. usaco 地震 && 奶牛观光

    Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...

  9. usaco 安慰奶牛

    Description 约翰有N个牧场,编号依次为1到N.每个牧场里住着一头奶牛.连接这些牧场的有P条 道路,每条道路都是双向的.第j条道路连接的是牧场Sj和Ej,通行需要Lj的时间.两牧场之 间最多 ...

随机推荐

  1. Linux下的压缩解压缩

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进  行压缩了,所以首先就来讲讲t ...

  2. windos8设置cpu数量和内存大小

    转自:http://smilejay.com/2012/03/windows_cpu_memory_setting/ Windows 8(测试版)在作为Xen Guest中的benchmark测试.我 ...

  3. PDFRender4NET的使用之pdf转图片

    同样的需要第三方的.dll,http://www.o2sol.com/pdfview4net/download.htm using O2S.Components.PDFRender4NET; usin ...

  4. LAMP结合discuz论坛的配置

    一.安装discuz ---->//download discuz; [root@localhost ~]# mkdir /data/www [root@localhost ~]# cd /da ...

  5. .pnts点云

    一种3d tiles格式 MIME格式: <configuration> <system.webServer> <staticContent> <remove ...

  6. xcode7 安装 KSImageNamed

    1.前往Xcode7的插件文件夹,路径如下: ~/Library/Developer/Xcode/Plug-ins 如果有KSImageNamed,右键删除 2.在终端直接输入命令行: default ...

  7. Linux 用户篇——用户管理命令之useradd、passwd、userdel、usermod

    一.用户重要,用户管理命令同样重要 用户是Linux系统安全的核心,每个登录Linux系统的用户都会分配相应的权限,这些权限取决于能否访问系统中各种对象.而管理这些用户的相关信息离不开用户管理命令,比 ...

  8. Spring MVC数据绑定(二)

    之前学习了SpringMVC数据绑定的基本知识和简单数据绑定以及POJO类型数据的绑定.接下来总结剩下的一些数据类型的绑定 1. 绑定包装POJO 所谓的包装POJO,就是在一个POJO中包含另一个简 ...

  9. java.lang.reflect.UndeclaredThrowableExceptionjiang

    实例包含由调用处理程序抛出的经过检查的未声明异常,可以使用 getUndeclaredThrowable() 方法获取 String msg = null; if (e instanceof Unde ...

  10. web2.0 HW3 相关阅读材料

    W3C官网的材料简直看花眼……除了挂出的文档,www-style@w3.org的一堆邮件也藏着很多宝,但是看下来又眼花了……(好在宝们基本都被W3C吸收了=.=) 主要来自W3C的官网w3.org的一 ...