poj1734 Sightseeing trip(Floyd求无向图最小环)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std; typedef long long ll;
const int maxn = + ;
const int inf = 0x3f3f3f3f;
int n, m, ans;
int mp[maxn][maxn], dis[maxn][maxn], pos[maxn][maxn];
vector<int> path; //记录路径
inline void getpath( int x, int y ){
if( pos[x][y]== ) return;
getpath( x, pos[x][y] );
path.push_back(pos[x][y]);
getpath( pos[x][y], y );
} inline void floyd(){
ans = inf;
for( int k=; k<=n; k++ ){
for( int i=; i<k; i++ )
for( int j=i+; j<k; j++ )
if( (ll)dis[i][j] + mp[j][k] + mp[k][i] < ans ){
ans = dis[i][j]+mp[j][k]+mp[k][i];
path.clear(); //发现更优起点,清除之前路径
path.push_back(i); //该行到32行 按顺序插入才能构成环
getpath( i, j );
path.push_back(j);
path.push_back(k);
}
for( int i=; i<=n; i++ )
for( int j=; j<=n; j++ )
if( dis[i][j] > dis[i][k]+dis[k][j] ){ //此处要按dis[i][k]+dis[k][j]更新最短距离 而不是mp[i][k]+mp[k][j]
dis[i][j] = dis[i][k]+dis[k][j];
pos[i][j] = k;
}
}
} int main(){
scanf("%d%d", &n, &m);
memset( mp, inf, sizeof(mp) );
memset( pos, , sizeof(pos) );
for( int i=; i<=n; i++ ) mp[i][i] = ;
for( int i=; i<m; i++ ){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
if( w<mp[u][v] ) mp[u][v] = mp[v][u] = w;
}
memcpy( dis, mp, sizeof(mp) );
floyd();
if( ans==inf ){
puts("No solution.");
return ;
}
for( int i=; i<path.size(); i++ )
printf("%d ", path[i]);
puts(""); return ;
} /*
Sample Input
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20 Sample Output
1 3 5 2
*/
poj1734 Sightseeing trip(Floyd求无向图最小环)的更多相关文章
- FZU 2090 旅行社的烦恼 floyd 求无向图最小环
题目链接:旅行社的烦恼 题意是求无向图的最小环,如果有的话,输出个数,并且输出权值. 刚刚补了一发floyd 动态规划原理,用了滑动数组的思想.所以,这个题就是floyd思想的变形.在k从1到n的过程 ...
- #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...
- hdu 1599 find the mincost route floyd求无向图最小环
find the mincost route Time Limit: 1000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- POJ1734 Sightseeing trip (Floyd求最小环)
学习了一下用Floyd求最小环,思路还是比较清晰的. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring ...
- poj1734 Sightseeing trip【最小环】
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions:8588 Accepted:3224 ...
- POJ1734 - Sightseeing trip
DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its ...
- poj1734 Sightseeing trip[最小环]
一个最小环裸题.最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的,不想写了. 注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质,来枚举环上最大编 ...
- POJ 1734 Sightseeing trip(Floyd)
题目传送门 题目中文翻译: Description 桑给巴尔岛上的阿德尔顿镇有一家旅行社,它已决定为其客户提供除了许多其他名胜之外的景点.为了尽可能地从景点赚取收入,该机构已经接受了一个精明的决定:有 ...
- bzoj 1027 floyd求有向图最小环
结合得好巧妙.... 化简后的问题是: 给你两个点集A,B,求B的一个子集BB,使得BB的凸包包含A的凸包,求BB的最小大小. 先特判答案为1,2的情况,答案为3的情况,我们先构造一个有向图: 对于B ...
随机推荐
- 【Maven学习】定制库到Maven本地资源库
目标:手工操作将一个jar安装到本地仓库 第一步:首先获取到jar包,可以是第三方的 也可以是自己创建的,放到本地任意目录 比如:joda-time-2.10.3,放到C:\jar\ 目录下面 第二 ...
- nginx deny 封IP
官方文档地址:http://nginx.org/en/docs/http/ngx_http_access_module.html#deny Syntax: deny address | CIDR | ...
- Juju solutions for OpenStack
Juju solutions for OpenStack Juju makes it easy to deploy OpenStack at scale. Quickly and reliably b ...
- linux解压xz文件
本来要下一个 tar.gz 文件的,但是下了一个 xz的,以为不能用了,但是万能的百度.. 解决方法: 首先打包成tar文件 xz -d demo.tar.xz j接着用 tar -xvf demo. ...
- 在ensp上配置基于接口地址池的DHCP
原理 实验模拟 实验拓扑 相关参数 开启dhcp服务 开启接口的dhcp服务功能,指定从接口地址池分配(接口1一样) 配置接口DHCP服务租期(租期默认是一天) 设置保留地址 设置dns 我们在pc1 ...
- charles 4.2.1 Ubuntu破解版安装
charles 4.2.1 Ubuntu破解版安装 下载 charles-proxy-4.2.1_amd64.tar.gz 破解版 charles.jar 破解包 解压 sudo tar -zxvf ...
- Java IO 与 NIO 服务器&客户端通信小栗子
本篇包含了入门小栗子以及一些问题的思考 BIO package com.demo.bio; import java.io.*; import java.net.ServerSocket; import ...
- 创建包含CRUD操作的Web API接口5:实现Delete方法
本节是前面四节的延续,在前面几节中我们创建了Web API并添加了必要的基础设施,实现了Get.Post.和Put方法.本节中,我们将介绍如何在Web API中实现Delete方法. 在RESTful ...
- Chrome 谷歌开发者工具使用窍门
我们这里介绍主要的几块:Console.Source.Network Console 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的, ...
- 用HTML、CSS、JS制作圆形进度条(无动画效果)
逻辑 1.首先有一个圆:蓝色的纯净的圆,效果: 2.再来两个半圆,左边一个,右边一个将此蓝色的圆盖住,效果: 此时将右半圆旋转60°,就会漏出底圆,效果: 然后我们再用一个比底圆小的圆去覆盖这个大 ...