POJ 3259 Wormholes

来源:互联网 发布:波士顿矩阵 明星 编辑:程序博客网 时间:2024/06/05 18:46
//Time 250ms, Memory 332K
#include<iostream>#include<cstring>using namespace std;int cnt,n,m1,m2;struct point{    int a,b;    double t;    point(int a=0,int b=0,double t=0.0):a(a),b(b),t(t){}}p[6000];int bellman(){    int i,j;    int flag;    double dis[505];    for(i=0;i<n;i++) dis[i]=10001;    for(i=1;i<n;i++)    {        flag=0;        for(j=0;j<cnt;j++)        {            if(dis[p[j].b]>dis[p[j].a]+p[j].t)            {                dis[p[j].b]=dis[p[j].a]+p[j].t;flag=1;            }        }        if(!flag) break;    }    for(j=0;j<cnt;j++)    {        if(dis[p[j].b]>dis[p[j].a]+p[j].t) return 1;    }    return 0;}int main(){    int i,a,b,f;    double t;    cin>>f;    while(f--)    {        cin>>n>>m1>>m2;        cnt=0;        for(i=0;i<m1;i++)        {            cin>>a>>b>>t;            p[cnt++]=point(a,b,t);            p[cnt++]=point(b,a,t);        }        for(i=0;i<m2;i++)        {            cin>>a>>b>>t;            p[cnt++]=point(a,b,-1.0*t);        }        if(bellman()) cout<<"YES"<<endl;        else cout<<"NO"<<endl;    }    return 0;}

原创粉丝点击