2014年1月7日 星期二

[ZJ] d540. 老Z的题


#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define inf 999999999
int ma[505][505];
int main(){
    int i,j,k,t,n,m,w,x,y,z,flag;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d",&n,&m,&w);
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(i==j) ma[i][j]=0;
                else ma[i][j]=inf;
        for(i=0;i<m;i++){
            scanf("%d%d%d",&x,&y,&z);
            ma[x][y]=min(ma[x][y],z);
            ma[y][x]=ma[x][y];
        }
        for(i=0;i<w;i++){
            scanf("%d%d%d",&x,&y,&z);
            ma[x][y]=min(ma[x][y],-z);
        }

        for(k=1;k<=n;k++)
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                    if(ma[i][k]+ma[k][j]<ma[i][j])
                        ma[i][j]=ma[i][k]+ma[k][j];
        flag=0;
        for(i=1;i<=n;i++)
            if(ma[i][i]<0)
                flag=1;
        if(flag) puts("YES");
        else puts("NO");
    }
}

沒有留言:

張貼留言