有没有大佬告诉我哪写错了qwq
查看原帖
有没有大佬告诉我哪写错了qwq
559503
j_steady楼主2022/1/1 09:27
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<algorithm>
#include <bits/stdc++.h>

using namespace std;
int a,n,m;
int vis[30010],cnt[23313];
int dis[23313];
queue<int> q;
struct edge{
	int v,w,nxt; 
}e[30005];
int t,hd[233333];
void add(int u,int v,int w)
{
	e[++t].v=v;
	e[t].w=w;
	e[t].nxt=hd[u];
	hd[u]=t;
}
int u,v,w;
void spfa(int 1){
	memset(vis,0,sizeof(vis));
	memset(dis,0x7f,sizeof(dis));
	memset(cnt,0,sizeof(cnt));
	q.push(1);dis[1]=0; 
	while (!q.empty()){
		int ab=q.front();q.pop();vis[ab]=0;
		for (int j=hd[ab];j;j=e[j].nxt) {
			int to=e[j].v;
			if(dis[to]>dis[ab]+e[j].w) dis[to]=dis[ab]+e[j].w;
			if(vis[to]!=1){
			if (cnt[to]>n) {
				puts("YES\n");
				return;
				}
			q.push(to);
			vis[to]=1;
			cnt[to]=cnt[ab]+1;
			}
		}
	}
	puts("NO\n");
}
int main (){
	
	scanf ("%d",&a);
	for (int i=1;i<=a;i++){
		scanf ("%d%d",&n,&m);
		for (int j=1;j<=m;j++){
			scanf ("%d%d%d",&u,&v,&w);
			add (u,v,w);
			if (w>=0) add (v,u,w);
		}
		spfa(1);
	}
	return 0;
}
2022/1/1 09:27
加载中...