最短路计数

题目描述

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

输入描述

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

输出描述

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

样例输入
5 7
1 2
1 3
2 4
3 4
2 3
4 5
4 5
样例输出
1
1
1
2
4

这道题需要用到广搜,与动态规划结合求解

它求的是最短路,没有边权,所以说这里我们走到当前边的路径长度,就设为前一个点的最短路径加1,其实也就是求边权都是1的图的最短路径

接着就是说统计路径数量,我们画个图来分析一下

所以说,当前点的最短路径总数,就是所有入边最短路径总数之和

剩下的步骤,就和广搜没什么差异了

#include<bits/stdc++.h>
#define mod 100003
using namespace std;
const int N=5e6+5;
vector<int>a[N];
int n,m;
int dis[N];
int vis[N];
int dp[N];
queue<int>q;
void bfs(){dis[1]=0;//1号点走到1号点只要零步dp[1]=1;//走到底一个点只有一种q.push(1);//起点入队vis[1]=1;//标记起点while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<a[x].size();i++){//找出边int v=a[x][i];if(vis[v]==0){vis[v]=1;dis[v]=dis[x]+1;//当前点的最短路径长度q.push(v);}if(dis[v]==dis[x]+1){dp[v]=(dp[x]+dp[v])%mod;//状态转移}}}
}
signed main(){scanf("%d%d",&n,&m);int u,v;for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);a[u].push_back(v);a[v].push_back(u);//无向图,所以要反着再入一次}bfs();for(int i=1;i<=n;i++)printf("%d\n",dp[i]);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/595799.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ELK报错,索引变成只读状态。

问题描述 今天发现当天的索引在ES中并没有创建&#xff0c;logstash中不停的报错&#xff1a; [2021-05-24T05:47:51,904][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({“type”>“cluster_block_exception”, “reason”&g…

Navicat设置mysql权限

新建用户&#xff1a; 注意&#xff1a;如果不生效执行刷新命令:FLUSH PRIVILEGES; 执行后再重新打开查看&#xff1b; 查询权限命令&#xff1a;1234为新建的用户名&#xff0c;localhost为访问的地址 SHOW GRANTS FOR 1234localhost;如果服务器设置服务器权限后可能会出现权…

基于SpringBoot+Vue小型企业办公动化系统的设计和开发(源码+部署说明+演示视频+源码介绍+lw)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

Ubuntu/Centos文件误删恢复

Linux服务器上的文件存储都承载着大量的重要信息。然而,文件误删、软件故障或恶意攻击等风险总是伴随着我们。当这些不幸发生时,如何有效地恢复数据成为了一个亟待解决的问题。幸运的是,有相关的数据恢复工具,它能够帮助我们解决Linux服务器上的文件误删问题。 注意:该软…

Unity性能优化篇(十四) 其他优化细节以及UPR优化分析器

代码优化&#xff1a; 1. 使用AssetBundle作为资源加载方案。 而且经常一起使用的资源可以打在同一个AssetBundle包中。尽量避免同一个资源被打包进多个AB包中。压缩方式尽量使用LZ4&#xff0c;少用或不要用LZMA的压缩方式。如果确定后续开发不会升级Unity版本&#xff0c;则可…

C++不知算法系列之滑动指针

公众号&#xff1a;编程驿站 1. 前言 双指针搜索算法&#xff0c;常见的有左右双指针&#xff1b;快慢双指针&#xff1b;先后双指针以及多指针……其中还包括一类滑动指针。滑动指针也称为滑动窗口指针&#xff0c;其搜索实现即有灵性又透着优雅。 本文通过几个案例聊聊滑动…

【Java EE】初识Spring Web MVC

文章目录 &#x1f334;什么是Spring Web MVC&#xff1f;&#x1f338;什么是Servlet呢? &#x1f332;MVC 定义&#x1f338;再理解Spring MVC &#x1f333;如何学习Spring MVC呢&#xff1f;⭕总结 &#x1f334;什么是Spring Web MVC&#xff1f; Spring Web MVC 是基于…

Github 2024-04-05Java开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-05统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目1OpenAPI 生成器:基于规范自动生成API工具 创建周期:2155 天开发语言:Java协议类型:Apache License 2.0Star数量:1…

二叉树oj题(1)

1.检查两棵树是否相同 解题思路&#xff1a; 1.两棵树都为空&#xff0c;return true 2.一个为空&#xff0c;一个不为空&#xff0c;return false 3.节点不为空&#xff0c;但值不相同&#xff0c;return false 以上都是特殊情况&#xff0c;如果没有这些情况&#xff0c;就…

NoSQL概述

NoSQL概述 目录 一、为什么用NoSQL 二、什么是NoSQL 三、经典应用分析 四、N o S Q L 数 据 模 型 简 介 五、NoSQL四大分类 六、CAP BASE 一、为什么用NoSQL 1、单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般不大&#xff0c;用单个数据库完全可以轻松应…

理解Go语言中的并发和并行

即使有多年的并发编程经验,有些开发人员也可能无法清楚地理解并发(concurrency)和并行(parallelism)之间的区别。下面我们以一个真实的例子来说明:一家咖啡店。 在这家咖啡店中,一名服务员负责接收订单并使用一台咖啡机进行准备。顾客下订单,然后等待他们的咖啡。 …

99%的人不知道,Oracle resetlogs强制开库需要推进SCN?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…