https://www.luogu.org/problem/show?pid=1144#sub

题目描述

给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。

输入输出格式

输入格式:

输入第一行包含2个正整数N,M,为图的顶点数与边数。

接下来M行,每行两个正整数x, y,表示有一条顶点x连向顶点y的边,请注意可能有自环与重边。

输出格式:

输出包括N行,每行一个非负整数,第i行输出从顶点1到顶点i有多少条不同的最短路,由于答案有可能会很大,你只需要输出mod 100003后的结果即可。如果无法到达顶点i则输出0。

输入输出样例

输入样例#1:

5 7
1 2
1 3
2 4
3 4
2 3
4 5
4 5

输出样例#1:

1
1
1
2
4

说明

1到5的最短路有4条,分别为2条1-2-4-5和2条1-3-4-5(由于4-5的边有2条)。

对于20%的数据,N ≤ 100;

对于60%的数据,N ≤ 1000;

对于100%的数据,N<=1000000,M<=2000000。

 1 #include <algorithm>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <queue>
 5
 6 using namespace std;
 7
 8 const int mod(100003);
 9 const int N(1000000+15);
10 const int M(2000000+15);
11 int n,m,u,v,w;
12
13 int head[N],sumedge;
14 struct Edge
15 {
16     int u,v,next;
17     Edge(int u=0,int v=0,int next=0):
18         u(u),v(v),next(next){}
19 }edge[M<<1];
20 void ins(int u,int v)
21 {
22     edge[++sumedge]=Edge(u,v,head[u]);
23     head[u]=sumedge;
24 }
25
26 queue<int>que;
27 int dis[N],cnt[N],inq[N];
28 void SPFA()
29 {
30     for(int i=1;i<=n;i++) dis[i]=N*10;
31     que.push(1); inq[1]=1; dis[1]=0; cnt[1]=1;
32     for(int fro;!que.empty();)
33     {
34         fro=que.front();que.pop();inq[fro]=0;
35         if(fro==n) continue;
36         for(int i=head[fro];i;i=edge[i].next)
37         {
38             int v=edge[i].v;
39             if(dis[v]==dis[fro]+1)
40                 cnt[v]=(cnt[v]%mod+cnt[fro]%mod)%mod;
41             else if(dis[v]>dis[fro]+1)
42             {
43                 dis[v]=dis[fro]+1;
44                 cnt[v]=cnt[fro]%mod;
45                 if(!inq[v]) que.push(v),inq[v]=1;
46             }
47         }
48     }
49 }
50
51 int main()
52 {
53     scanf("%d%d",&n,&m);
54     for(int i=1;i<=m;i++)
55     {
56         scanf("%d%d",&u,&v);
57         ins(u,v);ins(v,u);
58     }
59     SPFA();
60     for(int i=1;i<=n;i++) printf("%d\n",cnt[i]);
61     return 0;
62 }

转载于:https://www.cnblogs.com/Shy-key/p/7137012.html

洛谷——P1144 最短路计数相关推荐

  1. 洛谷 P1144 最短路计数 dijkstra

    https://www.luogu.org/problem/P1144 题目描述 给出一个NNN个顶点MMM条边的无向无权图,顶点编号为1−N1−N1−N.问从顶点111开始,到其他每个点的最短路有几 ...

  2. 洛谷 1144 最短路计数 bfs

    洛谷1144 最短路计数 传送门 其实这道题目的正解应该是spfa里面加一些处理,,然而,,然而,,既然它是无权图,,那么就直接bfs了,用一个cnt记录一下每一个点的方案数,分几种情况讨论一下转移, ...

  3. 洛谷P1061 Jam的计数法 数学

    洛谷P1061 Jam的计数法 数学  已知一个字符串 其 均有 s--t构成 且字符串要求 s[ i ]<s[ j ] i < j 已知一个字符串 求按字典序排列 的后5个字符串 1. ...

  4. 图解Topo拓扑排序 例题洛谷P4017 最大食物链计数

    适用条件:无环图 输出结果:使得每个节点,以它为终点的起点节点排都在其前面 作用:递推保证前面的节点都已经被使用过 实现方法:从没有入边的节点开始,输出并从其他节点中删去自己,重复此步骤直到所有节点都 ...

  5. 洛谷P1061 Jam的计数法

    题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...

  6. 洛谷P4727:图的同构计数(Polya引理)(dfs)

    解析 <关于我想了半天 dp 结果看题解 dfs 就行这回事> 我就说 gcd⁡\gcdgcd 这玩意 dp 个锤子啊- 拆分数的增长速度远没有想像中那么大,事实上,n=60n=60n=6 ...

  7. 洛谷 P2384 最短路题解

    题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你100000000000000000000000000000000000%10金币w ...

  8. Luogu P1144 最短路计数

    题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. 接下来M行 ...

  9. 洛谷B2058 奥运奖牌计数

    奥运奖牌计数 题目描述 2008 2008 2008 年北京奥运会,A 国的运动员参与了 n n n 天的决赛项目 ( 1 ≤ n ≤ 100 ) (1 \le n \le 100) (1≤n≤100 ...

  10. 洛谷——P2384 最短路

    P2384 最短路 题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你10000000000000000000000000000000 ...

最新文章

  1. UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
  2. Navicat Premium 未保存和已执行SQL存储位置
  3. 火狐浏览器如何禁止网站发消息 火狐浏览器禁止网站发消息的方法
  4. Web表单美化CSS框架Topcoat
  5. cocos2d-x 3.0rc1 编译cpp-testsproject
  6. php 修改文件所有者,PHP 改变文件的所有者
  7. connection对象的参数
  8. c语言跑马灯循环三次停止,跑马灯代码 连续不间断的跑马灯的代码(js)
  9. 儿童学计算机编程好处,十个理由告诉你孩子为什么要学习编程?
  10. matlab振荡环节相频特性,自动控制原理第五章频率特性)汇总.ppt
  11. 【干货】大学本科生零基础如何开始做发明类竞赛项目
  12. 顺序表和链表的优缺点
  13. 炫酷动态特效HTML实现源码【完整源码分享】
  14. w10连接远程计算机控制,win10系统教你如何远程控制他人电脑的方法
  15. linux添加菜单栏,Gnome desktop主菜单中添加自己的菜单栏
  16. jsp:通过Session控制登陆时间和内部页面的访问
  17. 卸载 npm 软件包
  18. python自相关函数提取基音周期_基音周期的提取
  19. surreal number应对不平等博弈
  20. linux 下opencv 安装的问题

热门文章

  1. 字符串怎样实例化成对象
  2. 解决PID 4、NT Kernal占用80、445等端口
  3. script标签的for属性和event属性
  4. Hibernate之一对多与多对一映射
  5. vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
  6. ftp文件服务器坑,Java实现FTP上传文件到Linux服务器的那些坑
  7. l如何更新linux内核,WSL更新Linux内核版本
  8. python requests 上传文件_Python 实现小程序云存储文件上传
  9. 印第安纳大学计算机语言学,语言学
  10. ubuntu mysql 内存满了_Ubuntu 下 mysql 卸载后重安装时遇到的问题