P1144 最短路计数

Posted zytwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1144 最短路计数相关的知识,希望对你有一定的参考价值。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1000005;
 4 const int maxm=2000005;
 5 const int INF=1e9;
 6 
 7 inline int read()
 8 {
 9     int x=0,k=1;char c=getchar();
10     while(c<0||c>9) {if(c==-) k=-1;c=getchar();}
11     while(c>=0&&c<=9) x=(x<<3)+(x<<1)+(c^48),c=getchar();
12     return x*k;
13 }
14 
15 int cnt,dis[maxn],vis[maxn],head[maxm],n,m,ans[maxn];
16 
17 struct Edge{
18     int u,v,w,next;
19 }e[maxm];
20 
21 inline void add(int u,int v)
22 {
23     e[++cnt].u=u;
24     e[cnt].v=v;
25     e[cnt].next=head[u];
26     head[u]=cnt;
27 }
28 
29 struct node{
30     int w,now;
31     inline bool operator <(const node& x) const
32     {
33     return w>x.w;
34     }
35 };
36 
37 priority_queue<node> q;
38 
39 void dijikstra()
40 {
41     for(int i=1;i<=n;++i) dis[i]=INF;
42     dis[1]=0;
43     ans[1]=1;
44     q.push((node){0,1});
45     while(!q.empty())
46     {
47         node x=q.top();
48         q.pop();
49         int u=x.now;
50         if(vis[u]) continue;
51         vis[u]=1;
52         for(int i=head[u];i;i=e[i].next)
53         {
54             int v=e[i].v;
55             if(dis[v]>dis[u]+1)
56             {
57                 dis[v]=dis[u]+1;
58                 ans[v]=ans[u];
59                 q.push((node){dis[v],v});
60             }
61             else if(dis[v]==dis[u]+1)
62             {
63                 ans[v]+=ans[u];
64                 ans[v]%=100003;
65             }
66         }
67     }
68 }
69 
70 int main()
71 {
72     n=read(),m=read();
73     for(int i=1,x,y;i<=m;++i)
74     {
75         x=read(),y=read();
76         add(x,y);
77         add(y,x);
78    }
79    dijikstra();
80    for(int i=1;i<=n;++i)
81    {
82        printf("%d
",ans[i]);
83    }
84    return 0;
85 }

这道题讲真不是很懂

以上是关于P1144 最短路计数的主要内容,如果未能解决你的问题,请参考以下文章

最短路 P1144 最短路计数Dijkstra堆优化/SPFA

最短路 P1144 最短路计数Dijkstra堆优化/SPFA

P1144 最短路计数

P1144 最短路计数

P1144 最短路计数

P1144 最短路计数 题解 最短路应用题