大佬求助
查看原帖
大佬求助
386385
ChenErxiang楼主2023/7/18 12:07
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cstdlib>
#define ll long long
using namespace std;
struct Edge
{
    int next;
    int to;
}edge[200010];
int head[100010]={0};
int cnt=0;
void add(int u,int v)
{
    cnt++; 
    edge[cnt].to=v;
    edge[cnt].next=head[u];
    head[u]=cnt;
}
inline ll read()
{
	ll s=0,w=1;char ch=getchar();
	while(ch<'0'||ch>'9')if(ch=='-')w=-1,ch=getchar();
	while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
	return s*w;
}
ll n,m,su,sv;
queue <ll>Q;
ll inq[1000010]={0};
ll dis[1000010]={0};
ll ans[1000010]={0};
int main()
{
	n=read(),m=read();
	for(ll i=1;i<=m;i++)su=read(),sv=read(),add(su,sv),add(sv,su);
	dis[1]=0;inq[1]=1;
	Q.push(1);
	ans[1]=1;
	while(!Q.empty())
    {
        int u=Q.front();
        Q.pop();
        for(int i=head[u];i;i=edge[i].next)
        {
            int v=edge[i].to;
            if(inq[v]==0)
            {
            	inq[v]=1;
            	dis[v]=dis[u]+1;
            	Q.push(v);
			}
			if(dis[v]==dis[u]+1)
			{
				ans[v]=(ans[v]+ans[u])%100003;
			}
        }
    }
    for(ll i=1;i<=n;i++)cout<<ans[i]<<"\n";
	return 0;
}
2023/7/18 12:07
加载中...