RE代码
  • 板块学术版
  • 楼主China_U_19641016
  • 当前回复11
  • 已保存回复11
  • 发布时间2025/7/30 12:44
  • 上次更新2025/7/30 17:07:57
查看原帖
RE代码
1304502
China_U_19641016楼主2025/7/30 12:44
#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){
            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) break;
        }
        if(f) cout<<"YES";
        else cout<<"NO";
        cout<<"\n";
	}
    return 0;
}

没看出来哪里RE,数组也开得足够大了

题目:https://www.luogu.com.cn/problem/P3865

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