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);
}
ssl1763-观光旅游【最小环,Floyd,dijkstra】相关推荐
- vijos 观光旅游 最小环fl 呆详看
背景 湖南师大附中成为百年名校之后,每年要接待大批的游客前来参观.学校认为大力发展旅游业,可以带来一笔可观的收入. 描述 学校里面有N个景点.两个景点之间可能直接有道路相连,用Dist[I,J]表示它 ...
- 【最小环】【Floyed】观光旅游(ssl 1763)
观光旅游 ssl 1763 题目大意: 在一个图中找到最小环 原题: 题目背景 在桑给巴尔岛的Adelton城镇上有一个旅游机构.它们决定在提供许多的其它吸引之外,再向客人们提供旅游本镇的服务. 为了 ...
- 最小环 floyd java_Floyd最小环
最小环:从一个点出发,经过一条简单路径回到起点成为环.图的最小环就是所有环中长度最小的. 怎样求最小环呢? 1传统的解决方法(dijkstra): 任意一个最小环环的权值,我们都可以看成两个有边相连的 ...
- matlab求解关键,基于遗传算法的多辆洒水车最优路径求解(其中包含MATLAB的一些关键语句说明和Floyd,Dijkstra,Euler算法).doc...
基于遗传算法的多辆洒水车最优路径求解(其中包含MATLAB的一些关键语句说明和Floyd,Dijkstra,Euler算法) 摘要 车辆路径问题可以分为以点为服务和以边为服务两种,洒水车问题是以边为服 ...
- 霍尔闭环电流传感器在电动观光旅游车上的应用
安科瑞王丹丹acrel2021 摘要:本文介绍了基于霍尔闭环原理,即磁平衡式原理的电流传感器在电动观光旅游车上的使用方法,替代传统的霍尔器件,较好的解决了电动车行业现有霍尔传感器的基本问题,在稳定性上 ...
- 安科瑞霍尔闭环电流传感器在电动观光旅游车上的应用浅析
摘要: 本文介绍了基于霍尔闭环原理,即磁平衡式原理的电流传感器在电动观光旅游车上的使用方法,替代传统的霍尔器件,较好的解决了电动车行业现有霍尔传感器的基本问题,在稳定性上更加优越. 关键词:霍尔闭环 ...
- 霍尔闭环电流传感器在电动观光旅游车上的应用-安科瑞黄安南
摘要:本文介绍了基于霍尔闭环原理,即磁平衡式原理的电流传感器在电动观光旅游车上的使用方法,替代传统的霍尔器件,较好的解决了电动车行业现有霍尔传感器的基本问题,在稳定性上更加优越. 关键词:霍尔闭环;电 ...
- 观光旅游(Floyd)
Description 在桑给巴尔岛的Adelton城镇上有一个旅游机构.它们决定在提供许多的其它吸引之外,再向客人们提供旅游本镇的服务. 为了从提供的吸引服务中尽可能地获利,这个旅游机构接收了一个精 ...
- 7-9 旅游规划 (25分) 【最短路径 Floyd+Dijkstra】
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
最新文章
- oracle ora 14047,ORA-14047: ALTER TABLE|INDEX RENAME 不可以与其它分区组合
- Ubuntu 安装和修改Apache2端口
- 猿团专访云信CTO阙杭宁——网易云信“稳定”背后的秘密
- tensorflow 之 tf.tile()函数
- swift for循环_Swift | 实战一个简单的素数计算器demo
- Mobile Web调试工具Weinre
- [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”
- 可以多次使用同一个hbitmap吗_求婚钻戒和结婚钻戒可以是同一个吗?意义戴法各不同,别胡乱混淆...
- JAVA中对集合排序
- mac苹果电脑使用耳机听不到声音
- mapbox创建空白底图
- 北京建筑大学计算机学院岑孝鹏,北京建筑大学
- 水处理设备网关,生活污水处理设备网关。
- ionic4.x仿京东 - 10.2.确认订单-去结算跳到确认订单(返回特定页面),确认订单页面布局
- 实用的CAD技巧,你也可以成为大神!
- Window平台的eclipse连接linux的hadoop集群
- samba服务器如何配置
- 关于线性稳压器的基本知识全面解析
- 获取省市区geoJson数据(精确到县、镇)用于echarts实现地图数据可视化
- 什么是国网综能服务集团虚拟电厂?——安科瑞 严新亚
热门文章
- 罗马数字转换成数字java_C趣味编程百例(31)将阿拉伯数字转换为罗马数字
- kotlin中mainactivity无法直接调用xml中的控件_使用52North 客户端接口调用OGC WPS服务...
- mfc从mysql中读取数据类型_在MFC中使用SQlite数据库读取数据
- 计算机所有数据的表示方式都是用,计算机数据表示
- mysql新加不了数据库_MySQL数据库之mysql增加新用户无法登陆解决方法
- 软件构造学习笔记-实验3
- 7-1 多数组排序 (12 分)三种做法(冒泡排序 ; 重写sort方法 ;利用sort和栈)
- DFS和BFS总结和代码演示(详解)
- Redis流量控制策略
- 本地Jupyter连接远程linux服务器