社区讨论

求助 WA~了三个点

P3385【模板】负环参与者 2已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mi7uuglr
此快照首次捕获于
2025/11/21 03:59
4 个月前
此快照最后确认于
2025/11/21 03:59
4 个月前
查看原帖
代码:
CPP
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,cnt,dis[2048],sum[2048],head[2048];
bool inque[2048];
struct Edge{
    int next,to,w;
}edge[8192];
inline void add(register int u,register int v,register int w){
	edge[++cnt].to=v;
	edge[cnt].next=head[u];
	edge[cnt].w=w;
	head[u]=cnt;
}
inline bool bfs_spfa(){
	queue<int>que;
	dis[1]=0;
	++sum[1];
	inque[1]=true;
	que.push(1);
	while(!que.empty()){
		register int u=que.front();
		inque[u]=false;
		for(register int i=head[u];i;i=edge[i].next){
			register int v=edge[i].to;
			register int w=edge[i].w;
			if(dis[u]+w<dis[v]){
				dis[v]=dis[u]+w;
				sum[v]=sum[u]+1;
				if(sum[v]>n){
					return false;
				}
				if(!inque[i]){
					que.push(v);
					inque[v]=true;
				}
			}
		}
		que.pop();
	}
	return true;
}
inline void set(){
	cnt=0;
	memset(dis,0x3f,sizeof(dis));
	memset(sum,0,sizeof(sum));
	memset(head,0,sizeof(head));
	memset(edge,0,sizeof(edge));
	memset(inque,false,sizeof(inque));
}
inline void Init(){
    scanf("%d%d",&n,&m);
    while(m--){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        add(u,v,w);
        if(w>=0){
        	add(v,u,w);
		}
    }
    if(!bfs_spfa()){
		puts("YE5");
	}else{
		puts("N0");
	}
}
int main(){
    int T;
    scanF(T);
    while(T--){
    	set();
    	Init();
	}
    return 0;
}
都是YE5的判成N0了

回复

7 条回复,欢迎继续交流。

正在加载回复...