最短路计数

题目描述

给出一个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. 【转】[退役]纪念我的ACM——headacher@XDU
  2. cv2.dnn读取模型报错
  3. http://miicaa.yopwork.com/help/overall/
  4. iisnode默认不支持PUT和DELETE的解决
  5. 国土空间适宜性评价与承载力评价之间的逻辑关系是什么?
  6. 如何学习ReactJS:初学者完整指南
  7. 分享两个Mysql在线全备和binlog日志备份脚本
  8. 企业IT治理样板间首次直播,教您如何打造高效可控的云环境
  9. Luogu1880 石子合并
  10. 保证金监控中心保证期货开户和交易记录
  11. 【转】【Coursera公开课】Applying to U.S. Universities(如何申请美国大学)笔记
  12. 软件设计 基础篇(二) 交互设计
  13. 【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
  14. 夏普linux电视软件,夏普电视第三方软件安装方法,使用教程和攻略
  15. 短视频软件开发——平台同质化如何破局
  16. ExcelVBA之某一区域平均值求解
  17. Android Studio Build Output控制台输出乱码解决
  18. 什么是适配器模式?适配器模式的优点和缺点?
  19. 山东大学软件学院数据结构复习题目
  20. WLAN从入门到精通—STA接入过程

热门文章

  1. 【java笔记】java中的常用容器
  2. Oralce细粒度审计
  3. C语言趣味程序设计编程百例精解
  4. 使用PlayCanvas制作一个简单的小游戏(一)
  5. 到底什么是对象,什么是对象的引用?对象和对象的引用有那些区别?
  6. Linux系统怎么复制文件夹下的全部文件到另外文件夹?
  7. Linux shell实现阶乘
  8. 通过fpga实现占空比的改变
  9. mavlink协议_MAVLink学习之路03_XML中定义MSG并生成C代码
  10. toString转化成json