记录编号 470407 评测结果 AAAAAAAWWW
题目名称 [USACO Feb07] 奶牛聚会 最终得分 70
用户昵称 Gravatarユッキー 是否通过 未通过
代码语言 C++ 运行时间 0.199 s
提交时间 2017-11-04 16:53:44 内存使用 1.49 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <queue>
#define N 1100
#include <iostream>
using namespace std;
int head[N],nex[N],u[100001],v[100001],w[100001],dis[N];
bool vis[N];
int ans[N];
queue<int>Q;
int a[N<<1];
int h,t;
int n,m,x;
int maxx=0;
inline int read()
{
    int ret=0;
    char ch=getchar();
    while(ch>'9' || ch<'0')ch=getchar();
    while(ch>='0' && ch<='9')ret=ret*10+ch-'0',ch=getchar();
    return ret;
}
void SPFA(int s)
{
    memset(dis,127,sizeof(dis));
    memset(vis,0,sizeof(vis));
    int i,tmp;
    vis[s]=1;
    dis[s]=0;
    Q.push(s);
    while(Q.size()!=0)
    {
        tmp=Q.front();
        Q.pop();
        vis[tmp]=0;
        for(i=head[tmp];i;i=nex[i])
        {
            if(dis[v[i]]>dis[tmp]+w[i])
            {
                dis[v[i]]=dis[tmp]+w[i];
                if(!vis[v[i]])
                {
                    Q.push(v[i]);
                    vis[v[i]]=1;
                }
            }
        }
    }
    ans[s]=dis[x];
}
int main()
{
    int i;
    freopen("sparty.in","r",stdin);
    freopen("sparty.out","w",stdout);
    n=read();m=read();x=read();
    for(i=1;i<=m;i++)
    {
        u[i]=read();v[i]=read();w[i]=read();
        nex[i]=head[u[i]];
        head[u[i]]=i;
    }
    for(i=1;i<=n;i++)
    {
        if(x!=n)SPFA(i);
    }
    SPFA(x);
    for(i=1;i<=n;i++){maxx=max(maxx,dis[i]+ans[i]);}
    printf("%d",maxx);
    return 0;
}