题目链接:https://www.luogu.org/problemnew/show/P1144
参考题解区:https://www.luogu.org/problemnew/solution/P1144
思路:
spfa算法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60#include <iostream> #include <vector> #include<queue> using namespace std; const int maxn=0x7fffffff; int n,m,x,y; int dis[1000010]; int vis[1000010]; int ans[1000010]; vector<int> g[1000010]; queue<int>q; inline void spfa(int x) { for(int i=1;i<=n;i++) dis[i]=maxn; q.push(x); vis[x]=1; ans[x]=1; dis[x]=0; while(!q.empty()) { int u=q.front(); q.pop(); for(int i=0;i<g[u].size();i++) { int v=g[u][i]; if(dis[v]>dis[u]+1) { dis[v]=dis[u]+1; ans[v]=ans[u]; if(!vis[v]) { vis[v]=1; q.push(v); } } else if(dis[v]==dis[u]+1) { ans[v]=(ans[v]+ans[u])%100003; } } vis[u]=0; } } int main() { cin>>n>>m; while(m--) { cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } spfa(1); for(int i=1;i<=n;i++) cout<<ans[i]<<endl; return 0; }
最后
以上就是欢呼蛋挞最近收集整理的关于洛谷 P1144 最短路计数 spfa的全部内容,更多相关洛谷内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复