题目描述

给出一个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。

分析
spfa+队列优化:
ans[i]表示有多少条1到i点的最短路。
双向图,要把2个相连的点正反方向都存储。
做一个spfa,如果dis[s[i]]+1小于当前的dis[t[i]]就替换,并且ans[t[i]]就等于ans[s[i]]的数量,如果等于把ans[t[i]]跟ans[s[i]]合并。
最后输出就好了,不过要注意取模。

程序:

var
next,ls,s,t,w,p:array[0..500001]of longint;
d,a:array[0..1000001]of longint;
v:array[0..1000001]of boolean;
n,m,q,i,j,g:longint;procedure spfa;
var
head,tail,i:longint;
beginhead:=0;tail:=1;d[1]:=0;a[1]:=1;v[1]:=true;p[1]:=1;while head<tail dobegininc(head);i:=ls[p[head]];while i>0 dobeginif d[s[i]]+1=d[t[i]] then a[t[i]]:=(a[t[i]]+a[s[i]]) mod 100003;if d[s[i]]+1<d[t[i]] thenbegind[t[i]]:=d[s[i]]+1;if v[t[i]]=false thenbeginv[t[i]]:=true;inc(tail);p[tail]:=t[i];end;a[t[i]]:=a[s[i]];end;i:=next[i];end;v[p[head]]:=false;end;
end;beginfillchar(next,sizeof(next),0);fillchar(ls,sizeof(ls),0);readln(n,g);i:=0;for j:=1 to g dobegininc(i);readln(s[i],t[i]);next[i]:=ls[s[i]];ls[s[i]]:=i;inc(i);s[i]:=t[i-1];t[i]:=s[i-1];next[i]:=ls[s[i]];ls[s[i]]:=i;end;for i:=1 to n dobegind[i]:=maxlongint;v[i]:=false;end;spfa;for i:=1 to n dowriteln(a[i]);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500065.html

最短路计数(spfa)相关推荐

  1. [图论]最短路计数(spfa)

    最短路计数 Description 给出一个NN个顶点MM条边的无向无权图,顶点编号为1-N1−N.问从顶点11开始,到其他每个点的最短路有几条. Input 第一行包含22个正整数N,MN,M,为图 ...

  2. 最短路——最短路计数(spfa)

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

  3. 最短路及最短路计数(SPFA)

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  4. 洛谷 P1606 [USACO07FEB]荷叶塘Lilypad Pond(spfa+最短路计数) 题解

    题目来源: https://www.luogu.org/problemnew/show/P1606 题目描述: 题目描述 FJ has installed a beautiful pond for h ...

  5. 洛谷 1144 最短路计数 bfs

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

  6. 【洛谷1144】最短路计数 最短路

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

  7. 最短路计数「负权值」

    最短路计数 题目描述: n个点m条边的无向无权图,问从顶点1开始,到其他每个点的最短路有几条 思路: 最短路计数首先要满足的条件是不能存在权值为0的环,如果存在,则能经过这个环的点的最短路的数量就是无 ...

  8. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

  9. 1491. [NOI2007]社交网络【最短路计数】

    Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这 ...

最新文章

  1. 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...
  2. GET POST 区别详解
  3. 使用Scroller实现弹性滑动
  4. 通用兄弟元素选择器 E ~ F
  5. python中的断点是什么_python中简单的递归(断点报错的小福利)
  6. SAP UI5 应用指定主题 theme 的几种方式和其优先级
  7. MEncoder 使用实例
  8. mac mysql5.7.10 密码_MAC下Mysql5.7.10版本修改root密码的方法
  9. Docker问题:Dockerfile的From之前不能使用ARG
  10. php邀请码演示代码,WordPress主题纯代码实现邀请码功能
  11. SpringNet整合NHibernate相关配置
  12. matlab 简单函数拟合(全)
  13. 排序算法-归并排序详细讲解(MergeSort)
  14. SAR图像:拟合杂波时常用的分布
  15. 利用遥感影像阴影建筑物高度计算
  16. 前端过程性考核,肝了一宿终于肝出来了!!!
  17. CDH 6系列(CDH 6.0.0、CDH 6.1.0、CDH 6.2.0等)安装和使用
  18. asp.net 全局sql注入处理 sql关键字过滤 global过滤sql
  19. shadowplay要下载java,Simprit.MiniExcel.S60.Java
  20. 第314场Leetcode周赛|使用机器人打印字典序最小的字符串

热门文章

  1. [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索
  2. GetCursorPos/WindowFromPoint/SendMessage
  3. 【CyberSecurityLearning 2】IP地址与DOS命令
  4. sql注入及mybatis防止sql注入
  5. STM32开发 -- 地球坐标系(WGS84),火星坐标系(GCJ02), 百度坐标系(BD09)坐标转换
  6. 【密码学】一万字带您走进密码学的世界(上)
  7. 在深度神经网络中你有多吸引人?
  8. [Android]用架构师角度看插件化(1)-Replugin入门剖析
  9. Let’s Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part I)
  10. TensorFlow 实战 MINST