100pts,求优化
查看原帖
100pts,求优化
1778019
Tangcm楼主2025/7/29 09:39

看了楼下的楼下的帖子,发现长得差不多,但还是TLE,求优化

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=100003;
ll n,m,ans[1000001],dis[1000001],h[1000001],nxt[1000001],cnt,to[1000001];
queue<ll>q;
void f(ll a,ll b)
{
    to[++cnt]=b;
    nxt[cnt]=h[a];
    h[a]=cnt;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	for(ll i=1;i<=m;i++)
	{
		ll u,v;
		scanf("%lld%lld",&u,&v);
		f(u,v);
        f(v,u);
	}
	memset(dis,0x3f,sizeof(dis));
	dis[1]=0;
	ans[1]=1;
	q.push(1);
	while(!q.empty())
	{
		ll u=q.front();
		q.pop();
		for(ll i=h[u];i;i=nxt[i])
		{
			ll v=to[i];
			if(dis[v]>dis[u]+1)
			{
				dis[v]=dis[u]+1;
				ans[v]=ans[u];
                q.push(v);
			}
			else if(dis[v]==dis[u]+1)
			{
				ans[v]=(ans[v]+ans[u])%mod;
			}
		}
	}
	for(ll i=1;i<=n;i++)cout<<ans[i]<<"\n";
}

QAQ

2025/7/29 09:39
加载中...