码迷,mamicode.com
首页 > 其他好文 > 详细

【luogu P1144 最短路计数】 题解

时间:2018-05-04 19:31:21      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:new   ack   for   i++   www.   include   题解   mod   printf   

题目链接:https://www.luogu.org/problemnew/show/P1144

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <queue>
 5 #include <vector>
 6 using namespace std;
 7 const int mod = 100003;
 8 const int maxn = 2000010;
 9 const int inf = 0x7fffffff;
10 int n, m, dis[maxn], ans[maxn];
11 bool vis[maxn];
12 queue<int>q;
13 vector<int>e[maxn];
14 int SPFA()
15 {
16     while(!q.empty())
17     {
18         int now1 = q.front();
19         q.pop();
20         for(int i = 0; i < e[now1].size(); i++)
21         {
22             int now2 = e[now1][i];
23             if(!vis[now2])
24             {
25                 vis[now2] = 1;
26                 dis[now2] = dis[now1]+1;
27                 q.push(now2);
28             }
29             if(dis[now2] == dis[now1]+1)
30             {
31                 ans[now2] = (ans[now2] + ans[now1])%mod;
32             }
33         }
34     }
35 }
36 int main()
37 {
38     scanf("%d%d",&n,&m);
39     for(int i = 1; i <= m; i++)
40     {
41         int u,v;
42         scanf("%d%d",&u,&v);
43         e[u].push_back(v);
44         e[v].push_back(u);
45     }
46     int s = 1;
47     dis[s] = 0;
48     q.push(s);
49     vis[s] = 1;
50     ans[s] = 1;
51     SPFA();
52     for(int i = 1; i <= n; i++)
53     printf("%d\n",ans[i]);
54 }

 

【luogu P1144 最短路计数】 题解

标签:new   ack   for   i++   www.   include   题解   mod   printf   

原文地址:https://www.cnblogs.com/MisakaAzusa/p/8992164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!