萌新袜子刚学 OI 1ms,SPFA 负环板子 WA 84pts 求调
查看原帖
萌新袜子刚学 OI 1ms,SPFA 负环板子 WA 84pts 求调
639085
SSqwq_楼主2023/10/16 20:51

WA on #1 #2

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,w[3001][3001],flag,q;
vector<int> vc[3001];
queue<int> qu;
int dis[3001],vis[3001];
void SPFA(){
	while(!qu.empty()){
		int p=qu.front();
		qu.pop();
		for(int i=0;i<vc[p].size();++i){
			int nxt=vc[p][i];
			if(dis[p]+w[p][nxt]<dis[nxt]){
				dis[nxt]=dis[p]+w[p][nxt];
				qu.push(nxt);
				vis[nxt]++;
				if(vis[nxt]>=n){
					flag=1;
					return;
				}
			}
		}
	}
}
void work(){
	cin>>n>>m;
	flag=0;
	while(!qu.empty())qu.pop();
	memset(vis,0,sizeof(vis));
	memset(dis,0x7f,sizeof(dis));
	memset(w,0x7f,sizeof(w));
	for(int i=1;i<=m;++i){
		int u,v;
		cin>>u>>v;
		cin>>w[u][v];
		if(w[u][v]>=0){
			vc[v].push_back(u);
			w[v][u]=w[u][v];
		}
		vc[u].push_back(v);
	}
	dis[1]=0;
	qu.push(1);
	vis[1]=1;
	SPFA();
	for(int i=1;i<=n;++i){
		vc[i].clear();
	}
	if(flag){
		cout<<"YES"<<endl;
	}
	else{
		cout<<"NO"<<endl;
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>q;
	while(q--){
		work();
	}
	return 0;
}
2023/10/16 20:51
加载中...