洛谷——P1144 最短路计数
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。
输入输出样例
5 7 1 2 1 3 2 4 3 4 2 3 4 5 4 5
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 最短路计数相关推荐
- 洛谷 P1144 最短路计数 dijkstra
https://www.luogu.org/problem/P1144 题目描述 给出一个NNN个顶点MMM条边的无向无权图,顶点编号为1−N1−N1−N.问从顶点111开始,到其他每个点的最短路有几 ...
- 洛谷 1144 最短路计数 bfs
洛谷1144 最短路计数 传送门 其实这道题目的正解应该是spfa里面加一些处理,,然而,,然而,,既然它是无权图,,那么就直接bfs了,用一个cnt记录一下每一个点的方案数,分几种情况讨论一下转移, ...
- 洛谷P1061 Jam的计数法 数学
洛谷P1061 Jam的计数法 数学 已知一个字符串 其 均有 s--t构成 且字符串要求 s[ i ]<s[ j ] i < j 已知一个字符串 求按字典序排列 的后5个字符串 1. ...
- 图解Topo拓扑排序 例题洛谷P4017 最大食物链计数
适用条件:无环图 输出结果:使得每个节点,以它为终点的起点节点排都在其前面 作用:递推保证前面的节点都已经被使用过 实现方法:从没有入边的节点开始,输出并从其他节点中删去自己,重复此步骤直到所有节点都 ...
- 洛谷P1061 Jam的计数法
题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...
- 洛谷P4727:图的同构计数(Polya引理)(dfs)
解析 <关于我想了半天 dp 结果看题解 dfs 就行这回事> 我就说 gcd\gcdgcd 这玩意 dp 个锤子啊- 拆分数的增长速度远没有想像中那么大,事实上,n=60n=60n=6 ...
- 洛谷 P2384 最短路题解
题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你100000000000000000000000000000000000%10金币w ...
- Luogu P1144 最短路计数
题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. 接下来M行 ...
- 洛谷B2058 奥运奖牌计数
奥运奖牌计数 题目描述 2008 2008 2008 年北京奥运会,A 国的运动员参与了 n n n 天的决赛项目 ( 1 ≤ n ≤ 100 ) (1 \le n \le 100) (1≤n≤100 ...
- 洛谷——P2384 最短路
P2384 最短路 题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你10000000000000000000000000000000 ...
最新文章
- UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
- Navicat Premium 未保存和已执行SQL存储位置
- 火狐浏览器如何禁止网站发消息 火狐浏览器禁止网站发消息的方法
- Web表单美化CSS框架Topcoat
- cocos2d-x 3.0rc1 编译cpp-testsproject
- php 修改文件所有者,PHP 改变文件的所有者
- connection对象的参数
- c语言跑马灯循环三次停止,跑马灯代码 连续不间断的跑马灯的代码(js)
- 儿童学计算机编程好处,十个理由告诉你孩子为什么要学习编程?
- matlab振荡环节相频特性,自动控制原理第五章频率特性)汇总.ppt
- 【干货】大学本科生零基础如何开始做发明类竞赛项目
- 顺序表和链表的优缺点
- 炫酷动态特效HTML实现源码【完整源码分享】
- w10连接远程计算机控制,win10系统教你如何远程控制他人电脑的方法
- linux添加菜单栏,Gnome desktop主菜单中添加自己的菜单栏
- jsp:通过Session控制登陆时间和内部页面的访问
- 卸载 npm 软件包
- python自相关函数提取基音周期_基音周期的提取
- surreal number应对不平等博弈
- linux 下opencv 安装的问题
热门文章
- 字符串怎样实例化成对象
- 解决PID 4、NT Kernal占用80、445等端口
- script标签的for属性和event属性
- Hibernate之一对多与多对一映射
- vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
- ftp文件服务器坑,Java实现FTP上传文件到Linux服务器的那些坑
- l如何更新linux内核,WSL更新Linux内核版本
- python requests 上传文件_Python 实现小程序云存储文件上传
- 印第安纳大学计算机语言学,语言学
- ubuntu mysql 内存满了_Ubuntu 下 mysql 卸载后重安装时遇到的问题