10分蒟蒻求调
查看原帖
10分蒟蒻求调
733488
EasonX楼主2024/8/7 22:01
#include<bits/stdc++.h>
#define INF 100000005
#define ll long long
#define N 100005
using namespace std;
int n,m,a,b,p[N],dst[N],in[N],cnt[N],T;
vector<int> to[N],w[N];
ll SPFA(){
	fill(dst,dst+n+9,INF);
	queue<int> q;
	dst[1]=0,in[1]=1,cnt[1]=1;
	q.push(a);
	while(!q.empty()){
		ll u=q.front();in[u]=0;
		q.pop();
		for(int i=0;i<to[u].size();i++){
			ll v=to[u][i];
			if(dst[v]<dst[u]+w[u][i])continue;
			dst[v]=dst[u]+w[u][i];
			if(!in[v]){
				q.push(v);in[v]=1,cnt[v]=cnt[u]+1;
			}
		}
	}
	if(dst[b])return -1;
	return 0;
}
int main(){
	cin>>T;
	while(T--){
		cin>>n>>m;
		memset(in,0,sizeof in);
		memset(cnt,0,sizeof cnt);
		for(int i=1;i<=N;i++)to[i].clear();
		for(int i=1;i<=N;i++)w[i].clear();
		for(int i=1;i<=n;i++){
			int u,v,c;
			cin>>u>>v>>c;
			to[u].push_back(v);
			w[u].push_back(c);
		}
		int ans=SPFA();
		if(ans==-1)cout<<"YES\n";
		else cout<<"NO\n";
	}
	return 0;
}

用了vector,RE了

2024/8/7 22:01
加载中...