最短路计数(spfa)
题目描述
给出一个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)相关推荐
- [图论]最短路计数(spfa)
最短路计数 Description 给出一个NN个顶点MM条边的无向无权图,顶点编号为1-N1−N.问从顶点11开始,到其他每个点的最短路有几条. Input 第一行包含22个正整数N,MN,M,为图 ...
- 最短路——最短路计数(spfa)
题目链接 最短路--最短路计数(spfa) 题目描述 给出一个 N 个顶点 M 条边的无向无权图,顶点编号为 1-N.问从顶点 1 开始,到其他每个点的最短路有几条. 输入格式 第一行包含 2 个正整 ...
- 最短路及最短路计数(SPFA)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- 洛谷 P1606 [USACO07FEB]荷叶塘Lilypad Pond(spfa+最短路计数) 题解
题目来源: https://www.luogu.org/problemnew/show/P1606 题目描述: 题目描述 FJ has installed a beautiful pond for h ...
- 洛谷 1144 最短路计数 bfs
洛谷1144 最短路计数 传送门 其实这道题目的正解应该是spfa里面加一些处理,,然而,,然而,,既然它是无权图,,那么就直接bfs了,用一个cnt记录一下每一个点的方案数,分几种情况讨论一下转移, ...
- 【洛谷1144】最短路计数 最短路
最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. ...
- 最短路计数「负权值」
最短路计数 题目描述: n个点m条边的无向无权图,问从顶点1开始,到其他每个点的最短路有几条 思路: 最短路计数首先要满足的条件是不能存在权值为0的环,如果存在,则能经过这个环的点的最短路的数量就是无 ...
- BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)
Time Limit: 10 Sec Memory Limit: 64 MB Submit: 2343 Solved: 1266 [Submit][Status][Discuss] Descrip ...
- 1491. [NOI2007]社交网络【最短路计数】
Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这 ...
最新文章
- 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...
- GET POST 区别详解
- 使用Scroller实现弹性滑动
- 通用兄弟元素选择器 E ~ F
- python中的断点是什么_python中简单的递归(断点报错的小福利)
- SAP UI5 应用指定主题 theme 的几种方式和其优先级
- MEncoder 使用实例
- mac mysql5.7.10 密码_MAC下Mysql5.7.10版本修改root密码的方法
- Docker问题:Dockerfile的From之前不能使用ARG
- php邀请码演示代码,WordPress主题纯代码实现邀请码功能
- SpringNet整合NHibernate相关配置
- matlab 简单函数拟合(全)
- 排序算法-归并排序详细讲解(MergeSort)
- SAR图像:拟合杂波时常用的分布
- 利用遥感影像阴影建筑物高度计算
- 前端过程性考核,肝了一宿终于肝出来了!!!
- CDH 6系列(CDH 6.0.0、CDH 6.1.0、CDH 6.2.0等)安装和使用
- asp.net 全局sql注入处理 sql关键字过滤 global过滤sql
- shadowplay要下载java,Simprit.MiniExcel.S60.Java
- 第314场Leetcode周赛|使用机器人打印字典序最小的字符串
热门文章
- [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索
- GetCursorPos/WindowFromPoint/SendMessage
- 【CyberSecurityLearning 2】IP地址与DOS命令
- sql注入及mybatis防止sql注入
- STM32开发 -- 地球坐标系(WGS84),火星坐标系(GCJ02), 百度坐标系(BD09)坐标转换
- 【密码学】一万字带您走进密码学的世界(上)
- 在深度神经网络中你有多吸引人?
- [Android]用架构师角度看插件化(1)-Replugin入门剖析
- Let’s Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part I)
- TensorFlow 实战 MINST