牛客网 最短路 Floyd算法 Dijkstra算法 Java大数
链接:https://www.nowcoder.com/questionTerminal/a29d0b5eb46b4b90bfa22aa98cf5ff17
来源:牛客网
最短路径
- 热度指数:2992 时间限制:1秒 空间限制:65536K
- 算法知识视频讲解
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
Floyd算法
import java.util.*;
import java.math.*;
public class Main{static int maxn=(int)(100+10);static BigInteger MOD =new BigInteger("100000");static String INF="";static BigInteger[][] map=new BigInteger[maxn][maxn];static int n,m;static BigInteger base=new BigInteger("2");static void init() {for(int i=0;i<=n;i++) {for(int j=0;j<=n;j++) {if(i!=j)map[i][j]=new BigInteger(INF);elsemap[i][j]=new BigInteger("0");}}}static void floyd() {for(int k=0;k<n;k++)for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(map[i][j].compareTo(map[i][k].add(map[k][j]))>0)map[i][j]=map[i][k].add(map[k][j]);}public static void main(String[] args) {Scanner cin=new Scanner(System.in);for(int i=0;i<=160;i++)//2^500=10^155;INF+="9";while(cin.hasNext()) {n=cin.nextInt();m=cin.nextInt();init(); for(int k=0;k<m;k++) {int u=cin.nextInt();int v=cin.nextInt();if(!map[u][v].toString().equals(INF)) continue;map[u][v]=map[v][u]=new BigInteger( base.pow(k).toString());}floyd();for(int i=1;i<n;i++) {BigInteger d=map[0][i];if(d.toString().equals(INF))System.out.println("-1");elseSystem.out.println(d.mod(MOD));}}cin.close();}
}
Dijkstra算法
import java.util.*;
import java.math.*;
public class Main{static int maxn=(int)(100+10);static int n,m;static BigInteger MOD =new BigInteger("100000");static String INF="";static BigInteger[][] map=new BigInteger[maxn][maxn];static BigInteger base=new BigInteger("2");static void init() {for(int i=0;i<=n;i++) {for(int j=0;j<=n;j++) {if(i!=j)map[i][j]=new BigInteger(INF);elsemap[i][j]=new BigInteger("0");}}}static BigInteger[] dis=new BigInteger[maxn];static boolean[] vis =new boolean[maxn];static void dijkstra(int start) {for(int i=0;i<n;i++) {dis[i]=map[start][i];vis[i]=false;}dis[start]=new BigInteger("0");vis[start]=true;for(int i=0;i<n-1;i++) {int k=-1;BigInteger minD=new BigInteger(INF);for(int j=0;j<n;j++) {if(!vis[j]&&dis[j].compareTo(minD)<0) {minD=dis[j];k=j;}}if(k==-1) break;vis[k]=true;for(int j=0;j<n;j++) {if(!vis[j]&&dis[j].compareTo(dis[k].add(map[k][j]))>0)dis[j]=dis[k].add(map[k][j]);}}}public static void main(String[] args) {Scanner cin=new Scanner(System.in);for(int i=0;i<=160;i++)INF+="9";while(cin.hasNext()) {n=cin.nextInt();m=cin.nextInt();init(); for(int k=0;k<m;k++) {int u=cin.nextInt();int v=cin.nextInt();if(!map[u][v].toString().equals(INF)) continue;map[u][v]=map[v][u]=new BigInteger( base.pow(k).toString());}dijkstra(0);for(int i=1;i<n;i++) {BigInteger d=dis[i];if(d.toString().equals(INF))System.out.println("-1");elseSystem.out.println(d.mod(MOD));}}cin.close();}
}
牛客网 最短路 Floyd算法 Dijkstra算法 Java大数相关推荐
- 【牛客网刷题】中秋节前开启java专项练习错题总结第一天
[牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...
- 【牛客网】:数据结构——时间复杂度,算法复杂度
目录 一.时间复杂度 二.算法复杂度 一.时间复杂度 先看一张图: (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机 ...
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推
H.了断局 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcode ...
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第三场)D.小牛vs小客-博弈
菜哭... D.小牛vs小客 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://ww ...
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第五场) H.Tree Recovery-完全版线段树(区间更新、区间求和)...
H.Tree Recovery 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 链接:https:/ ...
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) A.吐泡泡-STL(stack)
不好玩,一堆板子,太菜了,被打爆了,B一直wa60%,D一直wa80%,D改了多组输入就过了... A.吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...
- 牛客网2018年全国多校算法寒假训练营练习比赛(第二场)
A-吐泡泡 链接:https://www.nowcoder.com/acm/contest/74/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第一场) 题解
A-大吉大利,今晚吃鸡--枪械篇 题目描述 在绝地求生(吃鸡)游戏里,不同的枪支有不同的威力,更是可以搭配不同的配件,以提升枪支的性能. 每一把枪都有其威力及其可装备配件种类.每一个配件有其所属种类, ...
- 牛客网 间单排序(LIS算法)
链接:https://ac.nowcoder.com/acm/contest/547/F 来源:牛客网 题目描述 LXK有一个序列,从N~1,但是他不小心把序列打乱了,现在他想找你把这串序列复原. 他 ...
最新文章
- cocos2d-js 自定义事件监听派发
- python编程300例_经典编程100例——python版(例9例10)
- [Android Studio] 初体验
- java实现js取反_特定位取反(js实现)
- Java 比特币开发系列教程汇总
- java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件
- Velocity 语法示例
- 马斯克回应一切:2018年极其痛苦,福特难熬下次经济衰退,后悔发太多推特
- 前端安全问题的解决方法
- msi主板B460 uefi+gpt安装win10
- 高德地图开放平台的使用
- oracle ebs 提交请求,EBS Form开发中点击按钮提交请求报表的实现方式--fnd_request.submit_request...
- 【测绘程序设计】坐标方位角推算神器(C#版)
- 比较两条曲线的相似程度
- Yocto OpenCV交叉编译
- 关于支付宝CertificateException: X.509 not found的那些事~づ♡ど,JDK同样的版本之间也会有问题!
- 苹果笔记本电脑运行win系统时温度过高解决办法
- VLOOKUP命令不生效的坑
- 思科Cisco packet tracer的实验之两个简单网络连接
- 网页端显示中文乱码问题
热门文章
- C++将类的构造函数、析构函数声明为private或者protected的用途
- 利用bind搭建dns
- centos7.0 没有netstat 和 ifconfig命令问题
- 正则表达式学习 (一) 转
- 让人生成功的49个细节
- 报错 插入更新_自增主键,三类插入测验答案,在这里。
- mysql data目录 说明_mysql 更改数据目录
- python获取输入框内容长度_python3 tkinter 获取输入字符串长度
- java堆设置成多少合适_jvm~xmx设置多少合适
- mysql 常用小工具包_mssql+mysql小工具(无需环境依赖)-mysql数据库批量实体CS类导出工具下载v3.0免费版-西西软件下载...