wa689求助
查看原帖
wa689求助
941729
peiyinsong楼主2024/4/14 19:27
#include<bits/stdc++.h>
using namespace std;
long long dian[6005],pan[6005];
vector<int> a[9005];
vector<int>w[9005];
int main()
{
int t;
cin>>t;
for(int u=0;u<t;u++)
{
	for(int i=0;i<=6005;i++)
	{
		a[i].clear();
		w[i].clear();
	}
	int n,m;
	bool sum=0;
	cin>>n>>m;
	queue<int>q;
	q.push(1);
	pan[1]=1;
	for(int i=0;i<=n;i++)
	{
		pan[i]=0;
		dian[i]=1234567;
	}
	for(int i=0;i<m;i++)
	{
		int o,p,l;
		cin>>o>>p>>l;
		if(l>0)
		{
			a[o].push_back(p);
		a[p].push_back(o);
		w[o].push_back(l);
		w[p].push_back(o);
		}
		else
		{
			a[o].push_back(p);
			w[o].push_back(l);
		}
		
	}
	dian[1]=0;
	while(!q.empty())
	{
		int asd=q.front();
		if(pan[q.front()]>=n)
		{
		sum=1;
		break;
		}
		q.pop();
		for(int i=0;i<a[asd].size();i++)
		{
			if(dian[a[asd][i]]>dian[asd]+w[asd][i])
			{
				dian[a[asd][i]]=dian[asd]+w[asd][i];
				q.push(a[asd][i]);
				pan[a[asd][i]]++;
				
			}
		}
		
	}
	if(sum!=0)
	{
		cout<<"YES"<<endl;
	}
	else
	{
		cout<<"NO"<<endl;
	}
}
return 0;
}


2024/4/14 19:27
加载中...