博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1144 最短路计数
阅读量:5880 次
发布时间:2019-06-19

本文共 1042 字,大约阅读时间需要 3 分钟。

 P1144 最短路计数

题目描述

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

输入输出格式

输入格式:

 

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:
5 71 21 32 43 42 34 54 5
输出样例#1:
11124

说明

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。

 

分析:

这题很明显是最短路动规。

用SPFA就好。

搜到一条新路时,如果长度和原来的最长值相同,就累加路径数(因为相当于找到新的路,用加法原理)。

如果不相同,就替换成小的。

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 const int mxn=240000;10 int dis[mxn],num[mxn];11 vector
e[mxn];12 int n,m;13 bool inq[mxn];14 void SPFA(int s){15 queue
q;16 q.push(s);17 dis[s]=0;num[s]=1;18 inq[s]=1;19 while(!q.empty()){20 int u=q.front();21 q.pop();22 //所有和u节点相连的边 23 for(int i=0;i

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/7433538.html

你可能感兴趣的文章
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>
WPF 实现窗体拖动
查看>>
来自维基百科程序员Brandon Harris
查看>>
NULL不是数值
查看>>
CentOS 5 全功能WWW服务器搭建全教程
查看>>
scala111
查看>>
模块化服务规范——OSGI
查看>>
劣质代码评析——猜数字问题(上)
查看>>
纸上谈兵: 栈 (stack)
查看>>