SPFA求助,WA#9
查看原帖
SPFA求助,WA#9
395380
zvz_yyds楼主2021/1/28 12:18
#include<bits/stdc++.h>
using namespace std;
long long n,m,u,v,w,i,j,e[2001],x,t,s,f[2001],o;
bool d[2001];
vector<long long>a[2001];
vector<long long>b[2001];
queue<long long>c;
int main()
{
	scanf("%lld",&t);
	for(s=0;s<t;s++)
	{
    scanf("%lld%lld",&n,&m);
    for(i=0;i<n;b[i].clear(),i++)
    a[i].clear();
    memset(d,0,sizeof(d));
    memset(f,0,sizeof(f));
    for(i=0;i<m;i++)
    {
    scanf("%lld%lld%lld",&u,&v,&w);
    a[u].push_back(v);
    b[u].push_back(w);
    if(w>=0)
    {
    a[v].push_back(u);
    b[v].push_back(w);
	}
	}
	for(o=0,i=2;i<=n;i++)
	e[i]=2147483647;
	c=queue<long long>();
	c.push(1);
	d[1]=1;
	while(!c.empty())
	{
	x=c.front();
	c.pop();
	d[x]=0;
	for(j=0;j<a[x].size()&&o==0;j++)
	if(e[x]+b[x][j]<e[a[x][j]])
	{
	e[a[x][j]]=e[x]+b[x][j];
	f[a[x][j]]++;
	if(f[a[x][j]]>=n) o=1;
	if(d[a[x][j]]==0)
	{
	c.push(a[x][j]);
	d[a[x][j]]=1;
	}
	}
	if(o!=0) break;
	}
	if(o!=0) printf("YES\n");
	else printf("NO\n");
	}
    return 0;
}
2021/1/28 12:18
加载中...