76 WA ON #5 #9 #10 求调
查看原帖
76 WA ON #5 #9 #10 求调
764231
GaCGe楼主2022/11/23 17:45

rt

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
struct edge {
  int y,dis;
};
const int inf = 0x3f3f3f3f;
const int N=1e5+5;
int n,m,s,t,u,v,w, d[N], cnt[N];
vector<edge> a[N];
bool vis[N];
queue<int> q;
bool spfa();
int main(){
	ios::sync_with_stdio(0);
//	freopen("5.in","r",stdin);
//	freopen("5.ans","w",stdout);	
	cin>>t;
	memset(d,0x7f,sizeof(d));
	while(t--){
		for(int i=0;i<N;i++){
			a[i].clear();
		}
		cin>>n>>m;
		for(int i=1;i<=m;i++){
			cin>>u>>v>>w;
			if(w>=0){
				a[u].push_back((edge){v,w});
				a[v].push_back((edge){u,w});
			}else{
				a[u].push_back((edge){v,w});
			}
		}if(spfa()==1)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}bool spfa(){
	memset(d,0x7f,sizeof(d));
	memset(cnt,0,sizeof(cnt));
	memset(vis,0,sizeof(vis));
	q.push(1);
	vis[1]=1;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		vis[x]=0;
		for(int i=0;i<a[x].size();i++){
			if(d[a[x][i].y]>d[x]+a[x][i].dis){
				
				d[a[x][i].y]=d[x]+a[x][i].dis;
				
				cnt[a[x][i].y]=cnt[x]+1;
				if(!vis[a[x][i].y]){
					q.push(a[x][i].y);
				}
				if(cnt[a[x][i].y]>m)return 1;
			}
		}
	}return 0;
}
2022/11/23 17:45
加载中...