Bellman_Ford WA on #9
查看原帖
Bellman_Ford WA on #9
483466
_TCR_楼主2024/4/8 20:18

submition

#include<iostream>
#include<cstring>
#define maxn 20001
#define maxm 40001
#define inf 0x3f3f3f3f
using namespace std;
int dis[maxn],head[maxn],tot,n,m;
struct E{
    int to,nxt,w;
}edge[maxm];
void add(int u,int v,int w){
    tot++;
    edge[tot].to=v,edge[tot].w=w,edge[tot].nxt=head[u];
    head[u]=tot;
}
bool bellman_ford(int s){
    memset(dis,0x3f,sizeof(dis));
    dis[s]=0;
    for(int i=1;i<n;i++){
        for(int j=1;j<=n;j++){
            if(dis[j]==inf)continue;
            for(int k=head[j];k;k=edge[k].nxt){
                if(edge[k].w!=inf&&dis[edge[k].to]>dis[j]+edge[k].w)dis[edge[k].to]=dis[j]+edge[k].w;
            }
        }
    }
    for(int j=1;j<=n;j++){
        for(int k=head[j];k;k=edge[k].nxt){
            if(dis[j]==inf||dis[edge[k].to]==inf)continue;
            if(edge[k].w!=inf&&dis[edge[k].to]>dis[j]+edge[k].w)return 1;
        }
    }
    return 0;
}
signed main(){
    //freopen("P3385_9.in","r",stdin);
    ios::sync_with_stdio(0);
    int t;
    cin>>t;
    while(t--){
        memset(head,0,sizeof(head));
        tot=0;
        cin>>n>>m;
        for(int i=1;i<=m;i++){
            int u,v,w;
            cin>>u>>v>>w;
            add(u,v,w);
            if(w>0)add(v,u,w);
        }
        if(bellman_ford(1))cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

orz

2024/4/8 20:18
加载中...