蒟蒻求dalao帮助
查看原帖
蒟蒻求dalao帮助
68960
M_and_P_楼主2020/8/8 17:31

刚学信息学的蒟蒻卡 zhizhang的模板

请问哪位dalao可以帮忙看一下?

感激不尽!!

附上WA*7个点的代码

#include<cstdio>
#include<cstring>
#include<queue> 
using namespace std;
const int N=10005;
struct node{
	int v,w;
}vex;
int n,m;
bool flag=0;
queue<int>q;
vector<node>G[N];
int dis[N],vis[N],num[N];
void SPFA(int u)
{
	int h,v,w;
	memset(dis,0x3f,sizeof(dis));
	memset(num,0,sizeof(num));
	memset(vis,0,sizeof(vis));
	dis[u]=0;
	while(!q.empty())q.pop();
	q.push(u);
	
	while(!q.empty())
	{
		h=q.front();
		q.pop();
		vis[h]=false;
		for (int i=0;i<G[h].size();i++)
		{
			v=G[h][i].v;
			w=G[h][i].w;
			if (dis[v]>dis[h]+w)
			{
				dis[v]=dis[h]+w;
				num[v]=num[h]+1;
				if (num[v]>n)
				{
					flag=1;
					break;
				}
				if (!vis[v]){
					vis[v]=1;
					q.push(v);
				}
			}
		}
		if (flag==1)break;
	}
}
int main()
{
	int x,y,z,k,T;
	scanf("%d",&T);
	while(T--)
	{
	scanf("%d%d",&n,&m);
	for (int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		if (z>=0){
			vex.v=y;vex.w=z;
			G[x].push_back(vex);
			vex.v=x;
			G[y].push_back(vex);
		}
		else {
			vex.v=y;vex.w=z;
			G[x].push_back(vex);
		}
	}
	flag=false;
	SPFA(1);
	if(flag)
		puts("YES");
	else 
		puts("NO");
	}
	return 0;
}
2020/8/8 17:31
加载中...