社区讨论

bfs60pts求助,1,2,3AC,4MLE,5TLE

P1144最短路计数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lquqncmw
此快照首次捕获于
2024/01/01 17:48
2 年前
此快照最后确认于
2024/01/01 20:48
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=100005,mod=100003;
struct node{
	int u;
	int l;
};
queue<node>q;
vector<int>a[N];
int n,m;
int ans[N];
int minn[N];
int f[N];
void bfs()
{
	while(!q.empty())
	{
		node k=q.front();
		q.pop();
		int g=k.u,d=k.l;f[g]=1;
		int len=a[g].size();
		for(int i=0;i<len;i++)
		{
			if(f[a[g][i]]==0)
			{
				q.push((node){a[g][i],d+1});
				if(d+1<minn[a[g][i]])
				{
					ans[a[g][i]]=0;
					minn[a[g][i]]=d+1;
				}
				if(d+1==minn[a[g][i]])
					ans[a[g][i]]=(ans[a[g][i]]+1)%mod;	
			}	
		}
	}
}
main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr), std::cout.tie(nullptr);
	cin>>n>>m;
	for(int i=1;i<=n;i++)minn[i]=1e+9;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		a[y].push_back(x);
		a[x].push_back(y);
	}
	minn[1]=1;f[1]=1;ans[1]=1;
	q.push((node){1,1});
	bfs();
	for(int i=1;i<=n;i++)
		cout<<ans[i]%mod<<'\n';
}

回复

0 条回复,欢迎继续交流。

正在加载回复...