当前位置: 首页 > news >正文

neuq-acm预备队训练week 8 P1144 最短路计数

题目描述

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

题目限制

输入格式

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

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

输出格式

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

输入输出样例

解题思路

基于图论的DFS,我们可以通过 记忆化搜索 或者 DP 进行优化。我们这里选择使用DP。用SPFA预处理跑一边最短路

AC代码

#include <bits/stdc++.h>
#define inf 0x7FFFFFFF
using namespace std;
#define Max 2000005
#define mod 100003
int n,m,head[Max],cnt,dis[Max],dp[Max];
bool inq[Max],vis[Max];struct edge{int to,nxt;
}e[Max];
void SPFA();
void DP();
void add(int u,int v);
int main()
{cin>>n>>m;for(int i=1;i<=m;++i){int a,b;cin>>a>>b;add(a,b),add(b,a);}SPFA();DP();for(int i=1;i<=n;++i) printf("%d\n",dp[i]);return 0;
}void add(int u,int v)
{e[++cnt].to = v;e[cnt].nxt = head[u];head[u] = cnt;
}void SPFA()
{priority_queue <pair<int,int> > q;for(int i=2 ;i<=n;++i) dis[i] = inf;q.push(make_pair(0,1));inq[1] = 1;while(!q.empty()){int now = q.top().second;q.pop();inq[now] = 0;for(int i = head[now];i;i = e[i].nxt){int to = e[i].to;if(dis[to] > dis[now] + 1){dis[to] = dis[now] + 1;q.push(make_pair(-dis[to],to));inq[to] = 1;}}}
}
void DP()
{memset(vis,0,sizeof(vis));queue <int> q;q.push(1);dp[1]=1;vis[1]=1;dis[1]=0;while(!q.empty()){int now = q.front();q.pop();for(int i=head[now];i;i=e[i].nxt){int to = e[i].to;if(dis[to] == dis[now] + 1){dp[to] += dp[now];dp[to] %= mod;if(!vis[to])q.push(to),vis[to] = 1;}}}
}

相关文章:

  • VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间
  • 20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG
  • Global IIIumination(GI)全局光照原理(一)3D空间全局光照
  • 【计算机网络实验】实验三 IP网络规划与路由设计(头歌)
  • 三. LiDAR和Camera融合的BEV感知算法-BEVFusion实战
  • 聚类算法的性能度量
  • MFC CLXHHandleEngine动态库-自定义设置对话框使用
  • 【线性代数与矩阵论】Jordan型矩阵
  • http的 content-type都有哪些?
  • Centos7及Ubuntu系统安装指定版本dockerdocker-compose安装
  • 基于以太坊的智能合约开发Solidity(基础篇)
  • Leetcode—389.找不同【简单】
  • 什么是神经网络的非线性
  • Unity 资源管理之Resources
  • TCP单聊和UDP群聊
  • [笔记] php常见简单功能及函数
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 77. Combinations
  • Computed property XXX was assigned to but it has no setter
  • export和import的用法总结
  • Fabric架构演变之路
  • Python_网络编程
  • Terraform入门 - 3. 变更基础设施
  • uva 10370 Above Average
  • 从零开始的无人驾驶 1
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 容器服务kubernetes弹性伸缩高级用法
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​力扣解法汇总946-验证栈序列
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # Java NIO(一)FileChannel
  • #define、const、typedef的差别
  • #Ubuntu(修改root信息)
  • #预处理和函数的对比以及条件编译
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十八)三元表达式和列表解析
  • (四)Controller接口控制器详解(三)
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)JAVA中的堆栈
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *1 计算机基础和操作系统基础及几大协议
  • ./configure,make,make install的作用
  • ./configure、make、make install 命令
  • .htaccess 强制https 单独排除某个目录
  • .naturalWidth 和naturalHeight属性,
  • .Net 6.0 处理跨域的方式
  • .net core 外观者设计模式 实现,多种支付选择
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案