ssl1763-观光旅游【最小环,Floyd,dijkstra】

正题

就是给出一个无向图,求最小环。


输入输出(需要自取)

Input

每组数据的第一行包含两个正整数:十字路口的个数N(N<=100),另一个是道路的 数目M(M<10000)。接下来的每一行描述一条路:每一行有三个正整数:这条路连接的两个路口的编号,以及这条路的长度(小于500的正整数)。

Output

  每一行输出都是一个答案。如果这条观光路线是不存在的话就显示“No solution”;或者输出这条最短路线的长度。

Sample Input

样例1

5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20

样例2

4 3
1 2 10
1 3 20
1 4 30
-1

Sample Output

样例1

61

样例2

No solution


解题1:Floyd算法

就是一个Floyd算法,然后在中间统计一下最小环。

代码(Floyd)

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,a[101][101],dis[101][101],ans,from,to,lon;
int main()
{scanf("%d%d",&n,&m);memset(a,127/3,sizeof(a));memset(dis,127/3,sizeof(dis));for (int i=1;i<=m;i++){scanf("%d%d%d",&from,&to,&lon);a[from][to]=lon;a[to][from]=lon;//记录距离dis[from][to]=lon;dis[to][from]=lon;//记录最短路}ans=707406377;for (int k=1;k<=n;k++){for (int i=1;i<=n;i++)for (int j=i+1;j<=n;j++)if (dis[i][j]!=dis[0][0])ans=min(ans,dis[i][j]+a[i][k]+a[k][j]);//更新最小环for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);//更新最短路}if (ans==707406377) printf("No solution");else printf("%d",ans);
}

当然,也可以进行优化,当k没有枚举到这个点时,那么后面的都没有被算出来,而且这是个无向图

代码(Floyd优化)

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,a[101][101],dis[101][101],ans,from,to,lon;
int main()
{scanf("%d%d",&n,&m);memset(a,127/3,sizeof(a));memset(dis,127/3,sizeof(dis));for (int i=1;i<=m;i++){scanf("%d%d%d",&from,&to,&lon);a[from][to]=lon;a[to][from]=lon;dis[from][to]=lon;dis[to][from]=lon;}ans=707406377;for (int k=1;k<=n;k++){for (int i=1;i<k;i++)for (int j=i+1;j<k;j++)if (dis[i][j]!=dis[0][0])ans=min(ans,dis[i][j]+a[i][k]+a[k][j]);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);}if (ans==707406377) printf("No solution");else printf("%d",ans);
}

解题2:dijkstra

枚举边,然后删去那条边,然后求那条边头尾最短路,接下来恢复那条边,加上那条边的权值就是一个环的长度。

代码(dijkstra)

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int w,minl,n,m,a[101][101],c[101],ans,from,to,lon,l[10001][2],mn,s;
bool b[101];
int main()
{scanf("%d%d",&n,&m);mn=0;memset(a,127/3,sizeof(a));for (int i=1;i<=m;i++){scanf("%d%d%d",&from,&to,&lon);a[from][to]=lon;a[to][from]=lon;l[++mn][0]=from;l[mn][1]=to;//记录边}ans=707406377;for (int k=1;k<=mn;k++){int o=a[l[k][0]][l[k][1]];a[l[k][0]][l[k][1]]=707406378;a[l[k][1]][l[k][0]]=707406378;//删边s=l[k][0];for (int i=1;i<=n;i++) c[i]=a[s][i];memset(b,false,sizeof(b));b[s]=true;c[s]=0;for (int i=1;i<n;i++){minl=707406377;w=0;for (int j=1;j<=n;j++)if (!b[j] && c[j]<minl){minl=c[j];w=j;}if (w==0) break;b[w]=true;for (int j=1;j<=n;j++)if (c[w]+a[w][j]<c[j])c[j]=c[w]+a[w ][j];}//以上dij不解释ans=min(ans,c[l[k][1]]+o);//求该环长度a[l[k][0]][l[k][1]]=o;//恢复两条边a[l[k][1]][l[k][0]]=o;}if (ans==707406377) printf("No solution");else printf("%d",ans);
}

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

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

相关文章

物联网模式下的多活数据中心架构认识与实践

做互联网应用很重要的一点是要保证服务可用性&#xff0c;特别是某些业务更是需要7*24小时不间断的对外提供服务&#xff0c;任何停机、宕机都会引起大面积的用户不满。持续可用性是把业务服务化时一个需要考虑的重要指标&#xff0c;很多时候我们都会牺牲一些功能来换取可用性…

subList?? subString???

今天看到了java中List中有个subList方法&#xff0c;感觉很熟悉有没有&#xff1f;没错&#xff0c;在Stirng类中&#xff0c;也有个类似的方法&#xff1a;subString。1String类的subStringString中的subString方法&#xff0c;官方解释是&#xff1a;返回字符串的子字符串&am…

互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑

上篇博文中&#xff0c;我们介绍了做互联网级监控系统的必备-Influxdb的关键特性、数据读写、应用场景&#xff1a;互联网级监控系统必备-时序数据库之Influxdb 本文中&#xff0c;我们介绍Influxdb数据库集群的搭建&#xff0c;同时分享一下我们使用集群遇到的坑&#xff01;…

考研数学二大纲22年考研

考试科目&#xff1a;高等数学、线性代数   考试形式和试卷结构   一、试卷满分及考试时间   试卷满分为150分&#xff0c;考试时间为180分钟.   二、答题方式   答题方式为闭卷、笔试.   三、试卷内容结构   高等教学 约80%   线性代数 约20%   四、试卷题…

ssl1500-最短路上的统计【Floyd】

正题 个无向图上&#xff0c;没有自环&#xff0c;所有边的权值均为1&#xff0c;对于一个点对&#xff08;a,b&#xff09;,我们要把所有a与b之间所有最短路上的点的总个数输出。 输入输出&#xff08;需要自取&#xff09; Input 第一行n,m,表示n个点&#xff0c;m条边 接…

Java中的subList方法

Java中的subList方法 今天看到了java中List中有个subList的方法&#xff0c;感觉很熟悉有没有&#xff1f;没错&#xff0c;在Stirng类中&#xff0c;也有个类似的方法&#xff1a;subString。 Stirng中的subString方法&#xff0c;官方解释是&#xff1a;返回字符串的子字符串…

考研408大纲22年考研

I 考试性质   计算机学科专业基础综合考试是为高等院校和科研院所招收计算机科学与 技术学科的硕士研究生而设置的具有选拔性质的联考科目&#xff0c;其目的是科学、公平、 有效地测试考生掌握计算机科学与技术学科大学本科阶段专业知识、基本理论、 基本方法的水平和分析问…

在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现

《在ASP.NET Core中使用Apworks快速开发数据服务》一文中&#xff0c;我介绍了如何使用Apworks框架的数据服务来快速构建用于查询和管理数据模型的RESTful API&#xff0c;通过该文的介绍&#xff0c;你会看到&#xff0c;使用Apworks框架开发数据服务是何等简单快捷&#xff0…

再有人问你Java内存模型是什么,就把这篇文章发给他

转载自 再有人问你Java内存模型是什么&#xff0c;就把这篇文章发给他 前几天&#xff0c;发了一篇文章&#xff0c;介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型&#xff0c;是这三个知识…

SpringMVC对Ajax请求的处理

SpringMVC对Ajax请求的处理 [1] 问题: 当浏览器发起一个ajax请求给服务器&#xff0c;服务器调用对应的单元方法处理ajax请求。 而ajax的请求在被处理完成后&#xff0c;其处理结果需要直接响应。而目前我们在单元方 法中响应ajax请求&#xff0c;使用的是response对象&#x…

ssl2344P2835-刻录光盘【Floyd,联通块数,图论】

正题 洛谷题目 就是给出一个图&#xff0c;求最小联通块数。 输入输出&#xff08;需要自取&#xff09; Input 先是一个数N&#xff0c;接下来N行&#xff0c;分别表示各个营员愿意把自己获得的资料拷贝给其他哪些营员。即输入数据的第N1行表示第i个营员愿意把资料拷贝给那…

为了金秋那沉甸甸的麦穗,我绝不辜负春天

本文原创&#xff1a;焦文宇我可以一落千丈&#xff0c;但我就是要一鸣惊人。——题记01 没有谁的一生是一帆风顺的&#xff0c;也没有谁的一生是充满坎坷的。人生就像是一场游戏“玩”的好坏全都在于自己&#xff0c;我们没有任何理由去抱怨生活中的点滴&#xff0c;我们应当对…

BigDecimal丢失精度的坑

问题&#xff1a;new BigDecimal(double d)的数值居然还是不精确的 double d 0.09; BigDecimal bigDecimalnew BigDecimal(d); System.out.println(bigDecimal); System.out.println(d); 输出结果&#xff1a; 0.0899999999999999966693309261245303787291049957275390625 …

编译型语言VS解释型语言

编译型语言人类代码 ————》一次性把代码给 翻译官&#xff08;编译器&#xff09;————》汇编--》机器语言代表 &#xff1a; c,c,golang优点&#xff1a;执行速度快缺点&#xff1a;跨平台可移植性差硬件 &#xff0c; cpu , 有自己指令规则 0000000001 打印&#xf…

P1236-Network of Schools(学校网络)【最强联通块,Kosaraju】

正题 POJ题目链接 给出一个图&#xff0c;求联通块数量和加入多少条边后会将全图变为一个最强联通块。 机翻输入输出&#xff08;需要自取&#xff09; 输入 第一行包含整数N&#xff1a;网络中的学校数量&#xff08;2 < N < 100&#xff09;。学校由前N个正整数标识…

限时团购,6.9折:《微信开发深度解析:公众号、小程序高效开发秘籍》推荐序

全书由目 Senparc.Weixin SDK 作者苏震巍历时 2 年完成&#xff0c;涵盖了开发微信公众号及小程序需要用的的各项后端开发技能、技巧、避坑提示&#xff0c;以及 Senparc.Weixin SDK 微信公众号及小程序模块全面的使用说明及原理剖析。 Senparc.Weixin SDK 发布 4 年多来&#…

SSM框架知识点复习

第三节 SSM框架知识点复习 SpringMVC的知识 技能:使用SpringMVC来处理浏览器发起的请求。 ① SpringMVC的基本使用流程 i. 导入jar包 ii. 配置SpringMVC的配置文件 iii. 配置web.xml文件 iv. 创建控制器类并声明单元方法 ② SpringMVC的单元方法获取请求 i. 使用形参名和键名一…

某同学工作之后的感悟

本文原创&#xff1a;王梦茹以下是王梦茹同学在学习中和工作中的感悟。01学习中出来之后发现在学校的学习效率是远远比自主学习效率高的&#xff0c;学什么东西之前都会先知道他的大体概念&#xff0c;通透了解一下再学习会发现有效率的多。在有大致了解的情况下再去听老师讲课…

“半路出家”的程序猿怎么不被“熊”

文本原创&#xff1a;孙浩投稿这篇文章总有点‘好为人师’的感觉&#xff0c;但是自己作为一个“半路出家”的程序看过太多的和我同样出身的程序半途而废了。我现在在一家软件公司就职&#xff0c;担任技术主管职位。01 带过毕业生&#xff0c;也带过中途转行&#xff0c;也带过…

这可能是把Docker的概念讲的最清楚的一篇文章

转载自 这可能是把Docker的概念讲的最清楚的一篇文章 Docker 是世界领先的软件容器平台&#xff0c;本文主要来介绍下关于Docker的那些事儿&#xff0c;主要包含以下内容&#xff1a; 容器 什么是Docker&#xff1f; Docker思想、特点 Docker容器主要解决什么问题 容器 V…