60求助
查看原帖
60求助
212320
djwj323楼主2021/7/17 15:13

#4MLE,#5TLE

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int n,m,x,y;
int M[1000003]={0,1};
int sum[1000003]={0,1},i,j;
vector<int>way[1000003];
void bfs()
{
	int deep=0,T=n-1,p,s;
	queue<int>e;
	e.push(1);
	while(T>0&&!e.empty())
	{
		p=e.size();
		for(i=1;i<=p;i++)
		{
			s=e.front(),e.pop();
			if(M[s]==0)  M[s]=deep,sum[s]=(sum[s]+1)%100003,T--;
			else if(M[s]==deep)  sum[s]=(sum[s]+1)%100003;
			else if(s!=1)  continue;
			for(j=0;j<way[s].size();j++)  if(M[way[s][j]]==0)  e.push(way[s][j]);
		}
		deep++;
	}
}
int main()
{
	for(scanf("%d%d",&n,&m),i=1;i<=m;i++)
	{	
		scanf("%d%d",&x,&y);
		if(x==y)  continue;
		way[x].push_back(y),way[y].push_back(x);
	}
	for(bfs(),i=1;i<=n;i++)  printf("%d\n",sum[i]%100003);
	return 0;
}
2021/7/17 15:13
加载中...