码迷,mamicode.com
首页 > 其他好文 > 详细

poj3259

时间:2014-06-10 00:52:03      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:c   style   a   color   int   string   

看了一天秘密糊糊

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 900001
struct node
{
    int u,v,w;
}q[100001];
int dis[10001];
int n,m,w1,count=0;
int B()
{
    int flag=0;
    for(int i=1;i<=n;i++)
        dis[i]=N;
    dis[1]=0;
    for(int i=1;i<=n-1;i++)
    {
        flag=0;
        for(int j=0;j<count;j++)
        {
            if(dis[q[j].v]>dis[q[j].u]+q[j].w)//这里u,v是不能颠倒的,因为
            {
               dis[q[j].v]=dis[q[j].u]+q[j].w;
               flag=1;
            }
        }
       /* for(int j=0;j<n;j++)
            printf(".%d",dis[j]);*/
        if(!flag) break;
    }
    for(int i=0;i<count;i++)
    {
         if(dis[q[i].v]>dis[q[i].u]+q[i].w)
            return 0;
    }
    return 1;
}
int main()
{
    int x,y,x1,T;
    scanf("%d",&T);
    while(T--)
    {
        count=0;
        scanf("%d%d%d",&n,&m,&w1);
        while(m--)
        {
            scanf("%d%d%d",&x,&y,&x1);
            q[count].u=x;
            q[count].v=y;
            q[count++].w=x1;
            q[count].u=y;
            q[count].v=x;
            q[count++].w=x1;
        }
        while(w1--)
        {
            scanf("%d%d%d",&x,&y,&x1);
            q[count].u=x;
            q[count].v=y;
            q[count++].w=-x1;//他是有方向的
        }
        int t=B();
        if(t==0) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

poj3259,布布扣,bubuko.com

poj3259

标签:c   style   a   color   int   string   

原文地址:http://www.cnblogs.com/zhangmingcheng/p/3778684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!