找不到哪里有问题,求条!#1 #3 AC,其他RE
查看原帖
找不到哪里有问题,求条!#1 #3 AC,其他RE
1408054
zhaolt2012楼主2025/6/18 20:20

在编辑器上没问题

提示: Runtime Error. Received signal 11: Segmentation fault with invalid memory reference.

#include<bits/stdc++.h>
using namespace std;
const int MAXN=3e3+10;
queue<int>q;
int v[MAXN],w[MAXN],nxt[MAXN],head[MAXN],idx;
int t,n,m,dis[MAXN],cnt[MAXN];
bool vis[MAXN];
void addEdge(int uu,int vv,int ww)
{
	idx++;
	nxt[idx]=head[uu];
	head[uu]=idx;
	v[idx]=vv;
	w[idx]=ww;
}
bool spfa()
{
	q.push(1);
	vis[1]=1;
	dis[1]=0;
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		vis[x]=0;
		for(int i=head[x];i!=0;i=nxt[i])
		{
			int vv=v[i];
			if(dis[x]+w[i]<dis[vv])
			{
				dis[vv]=dis[x]+w[i];
				if(!vis[vv])
				{
					q.push(vv);
					vis[vv]=1;
					if(++cnt[vv]>=n)return 1;
				}
			}
		}
	}
	return 0;
}
int main()
{
	cin>>t;
	while(t--)
	{
		memset(cnt,0,sizeof(cnt));
		memset(vis,0,sizeof(vis));
		memset(dis,0x3f3f3f3f,sizeof(dis));
		memset(v,0,sizeof(v));
		memset(w,0,sizeof(w));
		memset(nxt,0,sizeof(nxt));
		memset(head,0,sizeof(head));
		cin>>n>>m;
		int uu,vv,ww;
		for(int i=1;i<=m;i++)
		{
			cin>>uu>>vv>>ww;
			if(ww>=0)
			{
				addEdge(uu,vv,ww);
				addEdge(vv,uu,ww);
			}
			else addEdge(uu,vv,ww);
		}
		if(spfa())cout<<"YES\n";
		else cout<<"NO\n";
	}
}
2025/6/18 20:20
加载中...