求助!样例过了结果全WA了
查看原帖
求助!样例过了结果全WA了
716721
leo12334楼主2023/1/11 10:13

求助各位大佬,本蒟蒻是用bfs写的,样例过了然而测试点全WA了,不知道问题出在哪儿

#include<bits/stdc++.h>
using namespace std;
#define N 1234567
#define M 2234567
int n,m,x,y,step[N],ans[N],head[N],now,s,cnt,vis[N];
#define mod 100003
struct edge{
	int to,next;
}e[M];
void add(int x,int y){
	e[++cnt].to=y;
	e[cnt].next=head[x];
	head[x]=cnt;
}
void bfs(){
	memset(ans,0,sizeof(ans));
	memset(step,0x3f,sizeof(step));
	queue<int>q;
	q.push(1);
	ans[1]=1;step[1]=0;
	while(!q.empty()){
		int x=q.front();q.pop();
		if(vis[x])continue;
		vis[x]=1;
		for(int i=head[x];i;i=e[i].next){
			int y=e[i].to;
			q.push(y);
			if(!ans[y]) {
				ans[y]=ans[x];
				step[y]=step[x]+1; 
			}
			else{
				if(step[y]<step[x]+1)
					continue;//说明有更短的路径,当前路径已经不是最短路了 
				else if(step[y]==step[x]+1)
					ans[y]=(ans[y]+ans[x])%mod;// 说明有相同的最短路,加和 
				else {
					ans[y]=ans[x];
					step[y]=step[x]+1;//说明有更短的,更新
				}
			} 
		}
	}
}
int main(){
	cin>>n>>m;
	while(m--){
		cin>>x>>y;
		add(x,y); 
		add(y,x);
	}
	puts("") ;
	bfs();
	for(int i=1;i<=n;i++)
		cout<<ans[i]%mod<<endl;
}

2023/1/11 10:13
加载中...