0分,WA+RE,求调
查看原帖
0分,WA+RE,求调
845367
__QWQ_qwq__楼主2024/8/12 10:25
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e2+10,mod=1e9+7,inf=0x3f,INF=0x3f3f3f3f;
int n,m,s,t,dis[N],vis[N],num[N],mp[N][N];
void spfa()
{
	queue<int> q;
	q.push(1);
	memset(vis,0,sizeof(vis));
	memset(num,0,sizeof(num));
	memset(dis,inf,sizeof(dis));
	dis[1]=0;
	vis[1]=1; 
	num[1]++;
	while(!q.empty())
	{ 
		int t=q.front();
		q.pop();
		vis[t]=1;
		for(int i=1;i<=n;i++)
		{
			if(dis[i]>dis[t]+mp[t][i])
			{
				dis[i]=dis[t]+mp[t][i];
				if(!vis[i])
				{
					num[i]++;
					vis[i]=1;
					q.push(i);
					if(num[i]>=n) cout<<"YES"<<endl;
				}
			}
		}
	}
	cout<<"NO"<<endl;
}
signed main()
{
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n>>m>>t;
		memset(mp,inf,sizeof(mp));
		for(int i=1;i<=m;i++)
		{
			int x,y,z;
			cin>>x>>y>>z;
			mp[y][x]=mp[x][y]=min(mp[x][y],z);
		}
		for(int i=1;i<=t;i++)
		{
			int x,y,z;
			cin>>x>>y>>z;
			mp[x][y]=min(mp[x][y],-z);
		}
		spfa();
	}
}
2024/8/12 10:25
加载中...