P2850,最后一个点被hack掉了,求大佬指点
  • 板块灌水区
  • 楼主Lycdeer
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/21 23:41
  • 上次更新2024/8/22 10:34:24
查看原帖
P2850,最后一个点被hack掉了,求大佬指点
1088782
Lycdeer楼主2024/8/21 23:41
#include<bits/stdc++.h>
using namespace std;
const int N=3005;
const int INF=2147483647;
int h[N],nxt[N],to[N],val[N],cnt,g[N][N];
int dis[N],tmp[N];
bool vis[N],ans[N];
void init(){
	for(int i=1;i<=N;i++) tmp[i]=0;
	cnt=0;
	memset(dis,0x3f,sizeof(dis));
}
void add(int a,int b,int c){
	g[a][b]=c;
}
void SPFA(int l,int n,int m){
	queue<int> q;
	q.push(1);
	dis[1]=0;
	vis[1]=true;
	while(q.size()){
		int u=q.front(); q.pop();
		vis[u]=false;
		for(int j=1;j<=n;j++){
			int v=j,w=g[u][j];
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				if(vis[v]) continue;
				vis[v]=true;
				tmp[v]++;
				if(tmp[v]>n){
					ans[l]=true;
					return;
				}
				q.push(v);
			}
		}
	}
}
int main(){
	int T; cin>>T;
	for(int l=1;l<=T;l++){
		init();
		int n,m,w; cin>>n>>m>>w;
		for(int i=1;i<=m;i++){
			int u,v,p; cin>>u>>v>>p;
			add(u,v,p); add(v,u,p);
		}
		for(int i=1;i<=w;i++){
			int u,v,p; cin>>u>>v>>p;
			add(u,v,-p);
		}
		SPFA(l,n,m);
	}
	for(int i=1;i<=T;i++)
		if(ans[i]) cout<<"YES"<<'\n';
		else cout<<"NO"<<'\n';
	return 0;
}
2024/8/21 23:41
加载中...