#9 TLE,#11 WA
查看原帖
#9 TLE,#11 WA
95736
9u46楼主2020/4/30 11:15

想问一下到底咋了/youl

#include<bits/stdc++.h>
#define ns "-1"
#define fs(i,x,y,z) for(ll i=x;i<=y;i+=z)
#define ft(i,x,y,z) for(ll i=x;i>=y;i+=z)
#define ll long long
#define ull unsigned long long
#define db double
#define ms(a,b) memset(a,b,sizeof(a))
#define sz(a) sizeof(a)
using namespace std;
const int rw[]={-1,0,1,0,-1,1,-1,1},cl[]={0,1,0,-1,-1,1,1,-1};
const int N=100001,inf=0x3f3f3f3f;
const int daynum[]={114514,31,28,31,30,31,30,31,31,30,31,30,31};
const db E=2.718281828459,pi=acos(-1.0),eps=0.0000000001;
inline int read(){
	int date=0,w=1;char c=0;
	while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
	while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}
	return date*w;
}
struct bian{
	int next,to,w;
	bian(){
		w=0;
		next=0;
	}
}e[N];
int head[N],totm;
void add(int s,int ed,int www){
	e[++totm].next=head[s];
	e[totm].to=ed;
	e[totm].w=www;
	head[s]=totm;
}
int n,m,cruelm,s,t,d[N],p[N];
bool vis[N],flag;
void init(){
	fs(i,1,n,1){
		d[i]=0,vis[i]=0,head[i]=0;
	}
}
void spfa(int u){
	vis[u]=1;
	for(int k=head[u];k;k=e[k].next){
		int v=e[k].to,w=e[k].w;
		if(d[u]+w<d[v]){
			d[v]=d[u]+w;
			if(vis[v]||flag){
				flag=1;
				return;
			}else spfa(v);
		}
	}
	vis[u]=0;
	//return 0;
}
int main(){
	int t;t=read();
	while(t--){
		flag=0;
		m=0;
		totm=0;
		n=read(),cruelm=read();
		init();
		fs(i,1,cruelm,1){
			int u,v,w;
			u=read(),v=read(),w=read();
			if(w>=0){
				m+=2;
				add(u,v,w);
				add(v,u,w);
			} 
			else{
				m++;
				add(u,v,w);
			} 
		}
		
		totm--;
		fs(i,1,n,1){
			spfa(i);
			if(flag) break;
		}
		if(!flag) puts("NO");
		else puts("YES");
	}
	return 0;
}
2020/4/30 11:15
加载中...