求助 玄关 0pts
查看原帖
求助 玄关 0pts
772368
Wind_love楼主2024/3/2 16:30
#include<bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
priority_queue<pair<int,int> > q;
int vis[1000005],head[10000005],tot,d[1000005],ans[1000005],mod=100003;
struct jd{
	int v,nxt;
}a[2000005];
void add(int u,int v){
	a[++tot].v=v;
	a[tot].nxt=head[u];
	head[u]=tot;
}
void dji(){
	vis[1]=1;ans[1]=1;
	q.push(make_pair(0,1));
	memset(d,0x3f,sizeof d);d[1]=0;
	while(!q.empty()){
		int x=q.top().second;
		q.pop();
		if(vis[x])continue;
		vis[x]=1;
		for(int i=head[x];i;i=a[i].nxt){
			int y=a[i].v;
			if(d[y]>d[x]+1){
				d[y]=d[x]+1;
				q.push(make_pair(-d[y],y));
			}
			else if(d[y]==d[x]+1){
				ans[y]+=ans[x];
				ans[y]%=mod;
				cout<<y<<" "<<ans[y]<<endl;
			}
		}
	}
	return;
}
signed main(){
	int n;
	cin>>n;
	int m;
	cin>>m;
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		add(x,y);
		add(y,x);
	}
	dji();
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}
2024/3/2 16:30
加载中...