POJ3259 Bellman-Ford算法 求负环

来源:互联网 发布:js 遍历json数据 编辑:程序博客网 时间:2024/06/05 09:53

暴力bf...1954ms 差6ms卡过.


#include<cstdio>#include<cstring>#define INF 0x3f3f3f3fint n;int G[1000][1000];bool bf(){    int res[n+1];    memset(res,0x3f,sizeof(res));    res[1]=0;    for(int k=1;k<=n-1;k++)    {        for(int i=1;i<=n;i++)        {            for(int j=1;j<=n;j++)            {                if(res[j]>res[i]+G[i][j])                    res[j]=res[i]+G[i][j];            }        }    }    for(int i=1;i<=n;i++)    {        for(int j=1;j<=n;j++)        {            //printf("%d %d %d %d\n",res[j],res[i],G[i][j],res[i]+G[i][j]);            if(res[j]>res[i]+G[i][j])                return true;        }    }    return false;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        memset(G,0x3f,sizeof(G));        int m,w;        scanf("%d%d%d",&n,&m,&w);        for(int i=1;i<=n;i++) G[i][i]=0;        int from,to,val;        for(int i=1;i<=m;i++)        {            scanf("%d%d%d",&from,&to,&val);            if(G[from][to]>val)                G[from][to]=G[to][from]=val;        }        for(int i=1;i<=w;i++)        {            scanf("%d%d%d",&from,&to,&val);            G[from][to]=-val;        }        if(bf()) printf("YES\n");        else printf("NO\n");    }    return 0;}Close


0 0
原创粉丝点击