POJ1734 Sightseeing trip (Floyd求最小环)
学习了一下用Floyd求最小环,思路还是比较清晰的。
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 #include<vector>
6 using namespace std;
7 int a[310][310],d[310][310],pos[310][310];
8 int n,m,ans=0x3f3f3f3f;
9 vector<int> path;//用vector的领接表储存最小环方案
10 void get_path(int x,int y){
11 if(pos[x][y]==0) return ;
12 get_path(x,pos[x][y]);
13 path.push_back(pos[x][y]);
14 get_path(pos[x][y],y);
15 }
16
17 int main(){
18 cin>>n>>m;
19 memset(a,0x3f,sizeof(a));
20 for(int i=1;i<=n;i++) a[i][i]=0;
21 for(int i=1;i<=m;i++){
22 int x,y,z;
23 cin>>x>>y>>z;
24 a[y][x]=a[x][y]=min(a[x][y],z);//选择两点之间最短的路径
25 }
26 memcpy(d,a,sizeof(a));//将a全部复制到d中
27 for(int k=1;k<=n;k++){
28 for(int i=1;i<k;i++)
29 for(int j=i+1;j<k;j++)
30 if((long long)d[i][j]+a[j][k]+a[k][i]<ans){//更新答案
31 ans=d[i][j]+a[j][k]+a[k][i];
32 path.clear();
33 path.push_back(i);
34 get_path(i,j);
35 path.push_back(j);
36 path.push_back(k);
37 }
38 for(int i=1;i<=n;i++)//依据每一个k作为中转点更新ij最短路径
39 for(int j=1;j<=n;j++)
40 if(d[i][j]>d[i][k]+d[k][j]){
41 d[i][j]=d[i][k]+d[k][j];
42 pos[i][j]=k;
43 }
44 }
45 if(ans==0x3f3f3f3f){
46 cout<<"No solution.";
47 return 0;
48 }
49 for(int i=0;i<path.size();i++)
50 cout<<path[i]<<" ";
51 }
总结一下:主要是用k作为中转点,对于每一个k:i和j都是小于k的,先更新最小环的答案,然后用此时的k更新每个i,j的最短距离,为下一次循环(也就是k+1)作准备。
方程: min{d[i][j]+a[j][k]+a[k][i]} (1<=i<j<k)。
其中pos[i][j]=k,代表ij最短路间经过了k,用于get_path()。
POJ1734 Sightseeing trip (Floyd求最小环)的更多相关文章
- poj1734 Sightseeing trip(Floyd求无向图最小环)
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...
- #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...
- 算法复习——floyd求最小环(poj1734)
题目: 题目描述 N 个景区,任意两个景区之间有一条或多条双向的路来连接,现在 Mr.Zeng 想找一条旅游路线,这个路线从A点出发并且最后回到 A 点,假设经过的路线为 V1,V2,....VK,V ...
- 2017"百度之星"程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】
度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...
- Floyd求最小环!(转载,非原创) 附加习题(原创。)HDU-1599
//Floyd 的 改进写法可以解决最小环问题,时间复杂度依然是 O(n^3),储存结构也是邻接矩阵 int mincircle = infinity; Dist = Graph; ;k<nVe ...
- 2018.09.15 hdu1599find the mincost route(floyd求最小环)
传送门 floyd求最小环的板子题目. 就是枚举两个相邻的点求最小环就行了. 代码: #include<bits/stdc++.h> #define inf 0x3f3f3f3f3f3f ...
- 【BZOJ 1027】 (凸包+floyd求最小环)
[题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ...
- floyd求最小环 模板
http://www.cnblogs.com/Yz81128/archive/2012/08/15/2640940.html 求最小环 floyd求最小环 2011-08-14 9:42 1 定义: ...
- CF 1206D - Shortest Cycle Floyd求最小环
Shortest Cycle 题意 有n(n <= 100000)个数字,两个数字间取&运算结果大于0的话连一条边.问图中的最小环. 思路 可以发现当非0数的个数很大,比如大于200时, ...
随机推荐
- 乘风破浪,遇见未来新能源汽车(Electric Vehicle)之特斯拉提车必须知道的十个流程
订车 线下门店或者官网可以咨询和下单,一般来说,订金就是1000,还算可以接受. 订单账号 特斯拉账号是以邮箱为区分的,而不是手机号,我们下单的时候需要提供一个邮箱用来注册特斯拉账号. 注意了,敲黑板 ...
- linux常见命令(十)
cut/grep/sort/uniq/wc 连续执行多个命令--;进入/data新建data01目录,在data01目录新建test.txtcd /data;mkdir data01;cd data0 ...
- 游戏开发常遇到数据一致性BUG,怎么解?
摘要:数据副本强一致.全节点可写.存储全面降本,GaussDB(for Redis)重新定义游戏数据库,彻底修复一致性BUG. 本文分享自华为云社区<华为云GaussDB(for Redis)揭 ...
- Java四大引用详解:强引用、软引用、弱引用、虚引用
面试官考察Java引用会问到强引用.弱引用.软引用.虚引用,具体有什么区别?本篇单独来详解 @mikechen Java引用 从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活 ...
- 开发Chrome插件,实现网站自动登录
近期被一个事情困扰着,我们采购了一款软件,里面有一个数据大屏页,当登录过期后,数据就会保持原状,不再更新.和供应商反馈了很多次,都无法彻底解决数据显示的问题,没办法,自己周末在家研究,网站自动登录的事 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- ABC209F. Deforestation——DP(、数学容斥)
题面 有 n n n 棵树排成一排,每棵树高度为 h i ( i ∈ [ 1 , n ] ) h_i~(i\in[1,n]) hi (i∈[1,n]) ,你现在要按照一个排列 P P P 的顺序去砍 ...
- 「题解报告」 P3167 [CQOI2014]通配符匹配
「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通 ...
- Springboot连接数据库(解决报错2)
好家伙, 新建项目,不出意外的话总是会出点意外的 第一天正常运行,第二天就炸了. 1.看报错 百度一下找解决方案 试着将 application.properties中的 com.mysql.jdbc ...
- v-if和v-for的优先级是什么?
一.作用 v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 true值的时候被渲染 v-for 指令基于一个数组来渲染一个列表.v-for 指令需要使用 item in item ...