题目描述

N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离

输入描述:

第一行两个正整数N(2<=N<=100)M(M<=500),表示有N个城市,M条道路
接下来M行两个整数,表示相连的两个城市的编号

输出描述:

N-1行,表示0号城市到其他城市的最短路,如果无法到达,输出-1,数值太大的以MOD 100000 的结果输出。
示例1

输入

4 4
1 2
2 3
1 3
0 1

输出

8
9
11

基本思路:最小生成树,具体思路见代码注释
//此题关键:2的i次方的性质  2^N-1=2^0+2^1+……2^(N-1)
//看似的最短路径转化为最小生成树问题————距离数组记录的是全源最短路
#include<stdio.h>
#define N 101
int dis[N][N];
int Tree[N];
//并查集操作
int FindRoot(int x){if(Tree[x]==-1) return x;else{Tree[x]=FindRoot(Tree[x]);return Tree[x];}
}
//实现2的i次方
int mod(int i){int ret=1;while(i--){ret=(ret*2)%100000; //公式:(a*b)%c=[(a%c)*(b%c)]%c}return ret;
}
int main(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){int i,j,k,a,b,x,y,dist;//初始化Tree[]和dis[]for(i=0;i<n;i++){Tree[i]=-1;for(j=0;j<n;j++)dis[i][j]=-1;dis[i][i]=0;}for(i=0;i<m;i++){scanf("%d%d",&a,&b);x=FindRoot(a);y=FindRoot(b);if(x!=y){//当这条边的两个顶点不属于一个集合dist=mod(i);//核心代码:把集合1和集合2中所有节点找出,并更新彼此之间的距离for(j=0;j<n;j++){  //遍历N个城市,找寻以x为根(a和a的根)的节点(集合1中所有节点)if(x==FindRoot(j)){for(k=0;k<n;k++){ //遍历N个城市,找寻以y为根(b和b的根)的节点((集合2中所有节点)if(y==FindRoot(k)){//j,k分属两个集合;通过ab这条边连接彼此(dist)dis[j][k]=dis[k][j]=(dis[j][a]+dis[b][k]+dist)%100000;//更新两点间距离}} } }Tree[y]=x; //将两个集合合并}}for(i=1;i<n;i++){printf("%d\n",dis[0][i]);}}return 0;
}

上海交大机试真题—最短路径(最小生成树解法)相关推荐

  1. 【互联网大厂机试真题 - 华为】九宫格

    前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你.关于大厂机试流程.面经.面试指导等,如有任何疑问,欢迎联系我,wechat:steve ...

  2. 华为OD机试真题大全完整目录

    华为OD机试真题大全完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:华为OD机试真题大全 数量:406篇博文(2023年5月16日截止) 更新时间至:2023年5月16日(后续加上去的博文,会每 ...

  3. 【华为机试真题 Python实现】查找众数及中位数

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  4. HWOD机试真题(JavaScript)

    本栏有100+道算法题,并提供正确解法(JavaScript)和解题思路.保证都是华为机试真题(非练习题),大概率会考到原题.大家有什么问题可以留言探讨和交流.         华为机试有三道算法题, ...

  5. 【华为机试真题详解】不含 101 的数【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 示例2 题目解析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果 ...

  6. 2019北邮网安院机试真题(回忆版)@lantin

    2019北邮网安院机试真题(回忆版) 细不谈,前两题真的都是签到题,会简单排序和if-else都可以写的出来的题目.网安院的机试基本上是两道签到题,C题是数据结构题,D题是算法.做到保2争3,保3争4 ...

  7. 【华为机试真题详解】开心消消乐【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 题目解析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备 ...

  8. 【华为机试真题 Python实现】篮球比赛【2022 Q1 Q2 | 200分】

    文章目录 前言 题目描述 示例 1 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您 ...

  9. 【华为机试真题详解】高矮个子排队

    文章目录 前言 题目描述 示例 1 示例 2 示例 3 题目分析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备 ...

最新文章

  1. 2015级C++第10、11周程序阅读(补充) 继承和派生
  2. python能做表格吗-零基础小白怎么用Python做表格?
  3. sharepoint站点Feature的定制与开发 以及 stsadm 常用命令
  4. LESSON 9.1 随机森林回归器的实现
  5. HDU - 4686 Arc of Dream(矩阵快速幂,水题)
  6. KODExplorer 简介
  7. python 学习笔记(1)-转载
  8. 故障解决-CPU超频问题解决
  9. 使用Windows Server 2003搭建ASP网站001
  10. linux 时间戳几字节,字节转换跟时间戳转换
  11. 在 kali 中下载使用 Nessus
  12. 高光反差情况下出现紫边的成因分析
  13. EasyExcel导出Excel指定属性列
  14. git 误删分支恢复方法
  15. RHCE(四)SAMBA协议
  16. 记录每天背的单词,准备考研。(3月15日)
  17. PowerPC 体系结构开发者指南
  18. 数据挖掘导论学习笔记:第三章 探索数据
  19. 如何用SWOT进行自我分析?促进职场发展,改善精神内耗
  20. 电脑如何设置滑动关机——win10小彩蛋

热门文章

  1. znet zbus 子项目
  2. HTTP协议是无状态协议,怎么理解?
  3. MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  4. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)
  5. 程序、进程、线程区别与联系
  6. 博客堂也遇DotText经典Exception
  7. 半导体物理与器件_上海交通大学874半导体物理2班开课啦!
  8. 德富莱智能抹墙机器人_深圳智能制造应急生产联盟成立,大咖共探机器人行业新机遇...
  9. mysql 优化详解_MySQL 优化详解
  10. couchdb 视图操作_couchDB视图