WA+RE求调
查看原帖
WA+RE求调
1304502
China_U_19641016楼主2025/7/30 12:08
#include<bits/stdc++.h>
using namespace std;
const int N=6500,INF=0x3f3f3f3f;
int a[N][N],b[N],c[N],q[N],h,t,p,n,m,u,v,w;        
bool vis[N];         
int main(){
	cin>>p;
	while(p--){
		cin>>n>>m;
		for(int i=1;i<=n;i++){
			b[i]=INF;
			c[i]=0;
			vis[i]=0;
			q[i]=0;
			for(int j=1;j<=n;j++){
				if(i!=j) a[i][j]=INF;
				else a[i][j]=0;
			}
		}
        for(int i=1;i<=m;i++){
        	cin>>u>>v>>w;
        	a[u][v]=w;
        	if(w>=0) a[v][u]=w;
        }
        h=t=b[1]=0;
        q[t++]=vis[1]=1;
        bool f=0;
        while(h<t&&!f){
            int d=q[h++];
            vis[d]=0;
            for(int i=1;i<=n;i++){
                if(a[d][i]!=INF&&b[d]!=INF&&a[d][i]+b[d]<b[i]){
                    b[i]=b[d]+a[d][i];
                    c[i]=c[d]+1;
                    if(c[i]>=n){f=1;break;}
                    if(!vis[i]){
                    	vis[i]=1;
                    	q[t++]=i;
                    }
                }
            }
        }
        if(f) cout<<"YES";
        else cout<<"NO";
        cout<<"\n";
	}
    return 0;
}

数组已经开的很大了

2025/7/30 12:08
加载中...