最短路计数

题目描述

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

输入输出格式

输入格式:

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

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

输出格式:

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

用一个数组time[i]来记录一下走到i点并且路程为dist[i]有多少种走法,如果spfa中遇到了一样的dist,那么我们就把走法加上,如果遇到更小的路径,就更新dist和time。

#include<iostream>
#include<queue>
#include<cstdio>
#define N 4000050
#define INF 0x3f3f3f3f
using namespace std;int to[N],head[N],next[N],c[N],visit[N],dist[N],time[N];
int n,m,tot=0;void add_edge(int x,int y,int z)
{to[++tot]=y;c[tot]=z;next[tot]=head[x];head[x]=tot;
}
queue<int> q;
void spfa(int o)
{for (int i=2;i<=n;i++) dist[i]=INF,visit[i]=0,time[i]=0;q.push(o);visit[o]=1;dist[o]=0;time[o]=1;while(!q.empty()){int x=q.front();q.pop();visit[x]=0;for (int i=head[x];i;i=next[i]){int y=to[i];if (dist[y] == dist[x]+c[i]) time[y]=(time[y]+time[x])%100003;if (dist[y] > dist[x]+c[i]){time[y]=time[x]%100003;dist[y]=dist[x]+c[i];if (!visit[y]) visit[y]=1,q.push(y);}}}}int main()
{scanf("%d%d",&n,&m);for (int i=0;i<m;i++){int x,y;scanf("%d%d",&x,&y);add_edge(x,y,1);add_edge(y,x,1);}spfa(1);for (int i=1;i<=n;i++) printf("%d\n",time[i]%100003);return 0;
}

【洛谷1144】最短路计数 最短路相关推荐

  1. 洛谷 1144 最短路计数 bfs

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

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

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

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

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

  4. 洛谷2505 [HAOI2012]道路(最短路计数)

    洛谷传送门 [题目分析] 线段树?bczd,这么小的范围直接暴力就行啦. 直接O(n)枚举源点,每次跑最短路,然后对于每一条路径统计是否在最短路上.两个端点各有多少条最短路径经过即可. [代码~] # ...

  5. 【洛谷】【二分答案+最短路】P1462 通往奥格瑞玛的道路

    在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量有一天他醒来后发现自己居然到了联盟的主城暴风城在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目背景 [题目描述:] 在艾泽拉斯 ...

  6. 【2019 CSP-JのT4】[洛谷P5663]加工零件【最短路 · 变式】

    题目描述 linklinklink 凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神奇.工厂里有 n 位工人,工人们从 1∼n 编号.某些工人之间存在双向的零件传送带.保证每 ...

  7. 洛谷3238 HNOI2014 道路阻塞 最短路 线段树(无代码)

    题目链接 题意: 给你一个nnn个点mmm条边的有向带权图,给你输入一条长度为lll的从111到nnn的最短路,问你把最短路上每一条边删去后从111到nnn的最短路长度是多少. n<=1e5,m ...

  8. LOJ6354 洛谷4366:[Code+#4]最短路——题解

    https://loj.ac/problem/6354 https://www.luogu.org/problemnew/show/P4366 题面见上面. 这题很妙,且可能是我傻,感觉这题不太好想. ...

  9. 洛谷P1522 Floyd求全源最短路

    分析发现:连边前后 两个联通块本身的直径不被影响 题意所求可以转化为:第一个连通块最大直径 加连边距离 加第二个连通块最大直径 思路如下: 1.Floyd算法分别求出两个牧场内任意两点的距离 2.对两 ...

最新文章

  1. 程序员们的时间管理法则
  2. 幼儿园python_[Python]猜数字游戏AI版的实现(幼儿园智商AI)
  3. android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...
  4. 电脑安装python步骤-python3.8下载及安装步骤详解
  5. Mardown(或Latex)换行
  6. 控制显示隐藏_iOS13隐藏了5个超实用新功能:让iPhone的使用体验更好
  7. 「后端小伙伴来学前端了」Vuex原理图分析及结合生活案例让大家快速理解
  8. java实现linkstring,【JAVA SE基础篇】32.String类入门
  9. 遥感图像场景分类常用数据集
  10. (18) Node.js npm包管理工具
  11. linux 网络对讲,基于ARM与Linux的全数字化可视对讲系统的设计与实现
  12. bootstrap16-上下文表格布局
  13. python做一个爬虫要用到什么软件_python实现简单爬虫功能
  14. 控制台上对同一个设备进行数据收发监控
  15. 手机Web开发框架集
  16. Origin画图技巧之柱状图优化
  17. 花生壳ping域名得到的IP与实际IP不一致的解决方法
  18. 双绞线与计算机连接的接口是,rj45网络双绞线4根线接法详解
  19. 用3ds max 2020制做一个VRay油漆木材材质
  20. Java并发常见面试题(二)

热门文章

  1. 学习前端常用到的网站
  2. OC5038内置 MOS 开关降压型 LED 恒流驱动器
  3. python实现在线翻译
  4. 阿里云购买服务器、域名
  5. 共享纸巾机系统开发,关于Switch的使用
  6. 【ZZULIOJ】1011: 圆柱体表面积
  7. SSR解决了什么问题?
  8. 数论-卢卡斯定理(lucas)与拓展卢卡斯定理 (exlucas)
  9. 【基础知识】BSS段,数据段,代码段,堆栈段
  10. 机器学习中的概率模型