hdu1599

解题报告:
要通过此题就要明白 floyedfloyedfloyed 算法原理及其每步的含义。

     for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);}}}其本质就是动态规划 k作为阶段必须置于最外层,i,j作为附加状态置于内层mp<k,i,j>可以理解为 经过若干个编号不超过k的节点从i到j的最短路,进而转化为两个子问题:1.经过给若干个编号不超过k-1的节点从i到j最短路2.节点i经过k节点到j节点因此: mp<k,i,j> = min(mp<k-1,i,j>, mp<k-1,i,k> + mp<k-1,k,j>)再通滚动数组优化得到 mp<i,j>在枚举每次的ki时,我们就已经求出来 1~k-1之间的最短路。

回到本题求最小环:
假设存在一条最小环 u−v−k−uu-v-k-uu−v−k−u,既然是最小环,当拆掉 u−vu-vu−v时,v−k−uv-k-uv−k−u就是(u,v)(u,v)(u,v)最短路。
再回到前面floyed算法每次枚举 kik_iki​ 的时候我们就已经求出来1~k-1之间的最短路,前 k−1k-1k−1 个的点不包含 kkk 节点且它们之间的最短路径之间也不经过 kkk 节点。
从前 k−1k-1k−1 个点中取两点 i,ji,ji,j ,(i,j)(i,j)(i,j) 之间的最短路已经求得且不经过节点 kkk,再跟据floyed原理以k为中间节点进行更新得到最小环 i−j−k−ii-j-k-ii−j−k−i。

#include<bits/stdc++.h>
#define LL  long long
#define pii pair<LL,int>
#define all(x) x.begin(),x.end()
#define wp(x) write(x),putchar('\n')
#define wpl(x) write(x),putchar(' ')
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn = 2e5 + 5;
inline int read() {int s = 0, f = 1;char  ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-') f = -1; ch = getchar();}while (ch >= '0' && ch <= '9') {s = (s << 1) + (s << 3) + ch - '0'; ch = getchar();}return s * f;
}
inline void write(LL x) {if (x < 0) putchar('-'), x = -x;if (x > 9) write(x / 10);putchar(x % 10 + '0');
}
int mp[105][105],g[105][105];
int main(){int n,m,u,v,w;while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=mp[i][j]=(i==j)?0:1e8;for(int i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&w);g[u][v]=mp[u][v]=min(mp[u][v],w);g[v][u]=mp[v][u]=min(mp[v][u],w);}int ans=1e8;for(int k=1;k<=n;k++){for(int i=1;i<k;i++){for(int j=i+1;j<k;j++){ans=min(ans,mp[i][j]+g[i][k]+g[k][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);}}}if(ans==1e8) printf("No solution.\n");else printf("%d\n",ans);}return 0;
}

最小环问题 ( Floyed )相关推荐

  1. 【最小环】【Floyed】观光旅游(ssl 1763)

    观光旅游 ssl 1763 题目大意: 在一个图中找到最小环 原题: 题目背景 在桑给巴尔岛的Adelton城镇上有一个旅游机构.它们决定在提供许多的其它吸引之外,再向客人们提供旅游本镇的服务. 为了 ...

  2. 洛谷P2738 [USACO4.1]篱笆回路Fence Loops(Floyed求最小环)

    Floyd 多源最短路 && 传递闭包 && 最小环:http://blog.csdn.net/wzw1376124061/article/details/698701 ...

  3. 图论 + 数论 ---- CF1325E E. Ehab‘s REAL Number Theory Problem (约数个数 + 枚举 + bfs找最小环)[从图结构优化搜索]

    题目链接 题目大意: 给你nnn个数,每个数保证约数个数不超过777个.问你从中选出若 干个数的乘积是完全平方数,最少要选择多少个数?,不存在输出-1. 题目思路: 1.每个数约数不超过7个→\rig ...

  4. 图论 —— 环与块 —— 最小环

    [概述] 从一个点出发,经过一条简单路径回到起点,称为图的环,而图的最小环就是所有环中长度最小的. 所谓最小环问题,最小环就是指在一张图中找出一个环,使得这个环上的各条边的权值之和最小. [求最小环] ...

  5. 算法 图中求最小环路径 最小环个数 最大平均环 求简单无向图中环的个数

    最小环问题:求个图中环路径代价最小的回路. 如何求最小环?假如有 路径1->3->2,如果此时已经知道2-1的最短路径就好了. 回想下floyed的更新过程,就会发现更新第k次时,比k小的 ...

  6. 图的连通性问题之连通和最小环

    判断图中两点是否连通 1.floyed算法 时间复杂度:O(N3) 算法实现:把相连的两点设为dis[i][j]true,不相连的两点设为dis[i][j]=flase,用Floyed算法的变形: f ...

  7. hdu 1599 find the mincost route(找无向图最小环)(floyd求最小环)

    ps(我到今天才知道Floyd的核心思想是动态规划==) hdu 1599 find the mincost route(找无向图最小环) 注意!这里写成   #define data 0x3f3f3 ...

  8. 最小环算法求解(Dijkstra算法+Floyd算法)

    方法一: #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> ...

  9. poj1734(最小环+路径)

    最小环问题:指的是在一张图中找出一个环,使得这个环的各边的权值之和最小. 方法一:断边法: 1.断开环的一条边(Wij=inf) 2.用Dijstra算法求出i->j的最短路径 3.恢复这条边的 ...

最新文章

  1. RDKit | 从ChEMBL数据库提取大分子HELM单体(XML转换为DataFrame并搜索部分结构)
  2. 去除文件名中的'.'符号
  3. 项目分享三:页面之间的传值
  4. RabbitMQ—队列迁移插件shovel的使用
  5. nginx绑定freenom.com域名
  6. 上传失败 已保存至草稿_学霸的草稿纸火了,卷面整洁,网友调侃:作业都比不上这草稿本...
  7. display:flex弹性布局
  8. JavaScript onerror 事件( window.onerror = )
  9. 13 MM配置-主数据-定义物料状态
  10. 【Error】Less-loader 版本过高,TypeError: this.getOptions is not a function
  11. LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导
  12. Python1 安装和配置
  13. android api文档_【粉丝投稿】无需额外注解的 SpringBoot API文档生成工具
  14. vijos 1471 线性DP+贪心
  15. 话费充值 php,话费充值示例代码
  16. mysql主库、从库和备库
  17. html语言实现两数相加,HTML(2)
  18. Java压缩背景透明图片后图片背景变成黑底
  19. WPF 开机一键启动程序V1.0【原创】
  20. Notion为什么能让我放弃手账

热门文章

  1. SpringMVC源码分析之AbstractHandlerMethodMapping体系扩展
  2. 字符1到数字1的路线指南
  3. Origin软件2022中文版下载安装,Origin软件数据分析绘图特色功能
  4. Mysql 8.0修改密码
  5. Ionic+Angular 开发移动应用一:环境搭建
  6. c语言关于引用的使用
  7. 杰理之修改提高摄像头源视频输出帧率,确定摄像头源输出高帧率【篇】
  8. 2021-10-27
  9. 【实战篇:粘连物体分割——利用几何分割实现瓶盖分割检测】
  10. 中文句子相似度计算思路