求查错
查看原帖
求查错
241838
microchip楼主2022/7/12 17:25

自闭了

#include<bits/stdc++.h>
using namespace std;

struct node{
	int no,val;
};

bool operator<(const node &A,const node &B){
	return A.val>B.val;
}

int n,m,x,y,len[1000050],dist[1000050],ans[1000050];
vector<int>T[1000050];
priority_queue<node>q;

int main()
{
	cin>>n>>m;
	for(int i=0;i<m;i++){
		cin>>x>>y;
		T[x].push_back(y);
		T[y].push_back(x);
		len[x]++;
		len[y]++;
	}node X,k;
	X.no=1;X.val=0;
	q.push(X);
	dist[1]=0;ans[1]=1;
	for(int i=2;i<=n;i++)dist[i]=99999999;
	while(!q.empty()){
		X=q.top();
		q.pop();
		for(int i=0;i<len[X.no];i++){
			if(dist[X.no]+1<dist[T[X.no][i]]){
				dist[T[X.no][i]]=dist[X.no]+1;
				k.no=T[X.no][i];k.val=dist[X.no]+1;
				ans[T[X.no][i]]=ans[X.no];
				ans[T[X.no][i]]%=100001;
				q.push(k);
			}else if(dist[X.no]+1==dist[T[X.no][i]]){
				ans[T[X.no][i]]+=ans[X.no];
				ans[T[X.no][i]]%=100001;
			}
		}
	}/*X.no=1;X.val=0;
	q.push(X);
	while(!q.empty()){
		X=q.top();
		q.pop();
		for(int i=0;i<len[X.no];i++){
			if(dist[X.no]+1==dist[T[X.no][i]]){
				k.no=T[X.no][i];k.val=dist[X.no]+1;
				ans[T[X.no][i]]++;
				ans[T[X.no][i]]%=100003;
				q.push(k);
			}
				
		}
	}*/cout<<1<<endl;
	for(int i=2;i<=n;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}

2022/7/12 17:25
加载中...