POJ3259-Wormholes

http://poj.org/problem?id=3259

越看越不像我写的了- -

#include<stdio.h>
#define INF 0x0fffffff
struct type
{
    int s,t,len;
}edge[30000];
int d[505],n,m,w,nedge=0;
bool Bellman_Ford()
{
    int j,k,u,v; 
    bool f,isPossible=false;
    for(j=1;j<=n;j++)
       d[j]=INF;
    d[1]=0;
    for(j=1;j<=n-1;j++)
    {
        f=0;
        for(k=1;k<=nedge;k++)
        {
            u=edge[k].s; 
            v=edge[k].t;
            if(d[v]>d[u]+edge[k].len)
               d[v]=d[u]+edge[k].len;
            f=1;            
        }
        if(f==0)
           return false;
    }
    for(k=1;k<=nedge;k++)
    {
        u=edge[k].s; 
        v=edge[k].t;
        if(d[v]>d[u]+edge[k].len)
        {
            d[v]=d[u]+edge[k].len; 
            return 1;
        }
     }
     return 0;
}
int main(void)
{
    int t,i,j,u,v,value;
    scanf("%d",&t);
    while(t--)
    { 
        scanf("%d%d%d",&n,&m,&w);
        nedge=0;
        for(i=1;i<=m;i++)
        {
            scanf("%d%d%d",&u,&v,&value);
            nedge++;
            edge[nedge].s=u;
            edge[nedge].t=v;
            edge[nedge].len=value;
            nedge++;
            edge[nedge].s=v;
            edge[nedge].t=u;
            edge[nedge].len=value;
         }     
         for(i=1;i<=w;i++)
         {
              scanf("%d%d%d",&u,&v,&value);
             nedge++;
             edge[nedge].s=u;
             edge[nedge].t=v;
             edge[nedge].len=-value;
         }
         if(Bellman_Ford())
            printf("YES\n");
         else       
            printf("NO\n");
    }
    return 0;
}
posted @ 2012-08-30 19:35  Yogurt Shen  阅读(154)  评论(0)    收藏  举报