poj1734 Sightseeing trip[最小环]
一个最小环裸题。最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的,不想写了。
注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质,来枚举环上最大编号并枚举连边,这样另外枚举的两个点的最短路肯定不会经过和$k$连的边。
坑点:
- 平常inf都开0x3f3f3f3f,这题没注意,在求环那里如果三个inf一加,就爆掉了。。所以要改小一点。这个问题值得重视。
- Floyd正常输出路径应该就更新的时候记录中间点,最后直接递归输出。但是这里因为记录路径中$x$和$y$间的最短路必须是不经过当时的大于等于$k$的点的,所以最小环答案更新即记路径,不能到最后用Floyd转移数组输出路径。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #define dbg(x) cerr << #x << " = " << x <<endl
- using namespace std;
- typedef long long ll;
- typedef double db;
- typedef pair<int,int> pii;
- template<typename T>inline T _min(T A,T B){return A<B?A:B;}
- template<typename T>inline T _max(T A,T B){return A>B?A:B;}
- template<typename T>inline char MIN(T&A,T B){return A>B?(A=B,):;}
- template<typename T>inline char MAX(T&A,T B){return A<B?(A=B,):;}
- template<typename T>inline void _swap(T&A,T&B){A^=B^=A^=B;}
- template<typename T>inline T read(T&x){
- x=;int f=;char c;while(!isdigit(c=getchar()))if(c=='-')f=;
- while(isdigit(c))x=x*+(c&),c=getchar();return f?x=-x:x;
- }
- const int N=+,INF=0x0f0f0f0f;
- int mp[N][N],dis[N][N],g[N][N],h[N][N],n,m,ans=INF,pt1,pt2,pt3;
- void print(int i,int j){
- if(!h[i][j]){printf("%d ",i);return;}
- print(i,h[i][j]);
- print(h[i][j],j);
- }
- void path(int i,int j){
- h[i][j]=g[i][j];
- if(!g[i][j])return;
- path(i,g[i][j]),path(g[i][j],j);
- }
- int main(){//freopen("test.in","r",stdin);//freopen("test.ans","w",stdout);
- memset(mp,0x0f,sizeof mp),memset(dis,0x0f,sizeof dis);
- read(n),read(m);
- for(register int i=,x,y,z;i<=m;++i)read(x),read(y),read(z),dis[x][y]=dis[y][x]=mp[y][x]=mp[x][y]=_min(mp[x][y],z);
- for(register int i=;i<=n;++i)dis[i][i]=mp[i][i]=;
- for(register int k=;k<=n;++k){
- for(register int i=;i<k;++i)
- for(register int j=i+;j<k;++j)
- if(MIN(ans,mp[i][k]+mp[j][k]+dis[i][j]))
- pt1=i,pt2=j,pt3=k,path(i,j);//dbg(i),dbg(j),dbg(k);
- for(register int i=;i<=n;++i)
- for(register int j=;j<=n;++j)
- if(MIN(dis[i][j],dis[i][k]+dis[k][j]))
- g[i][j]=k;
- }
- if(ans<INF)print(pt1,pt2),printf("%d %d\n",pt2,pt3);
- else puts("No solution.");
- return ;
- }
poj1734 Sightseeing trip[最小环]的更多相关文章
- poj1734 Sightseeing trip【最小环】
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions:8588 Accepted:3224 ...
- POJ1734 Sightseeing trip (Floyd求最小环)
学习了一下用Floyd求最小环,思路还是比较清晰的. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring ...
- poj1734 Sightseeing trip(Floyd求无向图最小环)
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...
- POJ1734 - Sightseeing trip
DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its ...
- 「POJ1734」Sightseeing trip
「POJ1734」Sightseeing trip 传送门 这题就是要我们求一个最小环并且按顺序输出一组解. 考虑 \(O(n^3)\) 地用 \(\text{Floyd}\) 求最小环: 考虑 \( ...
- 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd
题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方 ...
- 【poj1734】Sightseeing trip
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8520 Accepted: 3200 ...
- URAL 1004 Sightseeing Trip(最小环)
Sightseeing Trip Time limit: 0.5 secondMemory limit: 64 MB There is a travel agency in Adelton town ...
- poj 1734 Sightseeing trip判断最短长度的环
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5590 Accepted: 2151 ...
随机推荐
- flex 遇上white-space:nowrap的2种解决方法
需求:使用flex布局,超出部分想使用点点点显示 一.方法1使用min-width:0 效果: HTML代码如下: <div class="team-body"> &l ...
- mapreducer计算原理
mapreducer计算原理
- 论文阅读及复现 | Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks
两种形式的LSTM变体 Child-Sum Tree-LSTMs N-ary Tree-LSTMs https://paperswithcode.com/paper/improved-semantic ...
- P2709 小B的询问 【普通莫队】
这是我的莫队入门题,我也了解到了莫队分为普通莫队以及带修莫队.顾名思义,普通莫队不需要修改区间的值,而带修莫队处理区间的值会修改的查询. 能用莫队的前提条件: 1.在知道 [l, r]中信息时,可以在 ...
- PYTHON 100days学习笔记001:初识python
现在学习这个确实时间很紧,但是迟早得学,以后PYTHON自动化运维,PYTHON自动测试都需要用的到,甚至可以往数据分析方向发展,刚好最近有数据观组织的python100天计划,就参加了,做好笔记,一 ...
- Mac下安装SecureCRT客户端并激活
1. 先下载SecureCRT和破解文件 默认下载到了当前用户的”下载”目录中 2. 在”Finder”中 打开 “scrt-7.3.0-657.osx_x64.dmg” 并将 SecureCRT复制 ...
- java分词工具hanlp介绍
前几天(6月28日),在第23届中国国际软件博览会上,hanlp这款自然语言处理工具荣获了“2019年第二十三届中国国际软件博览会优秀产品”. HanLP是由一系列模型预算法组成的工具包,结合深度神经 ...
- 查找担保圈-step6-对被包含过的组进行清理,只保留未被包含过的组
USE [test] GO /****** Object: StoredProcedure [dbo].[p04_get_groupno_cleared] Script Date: 2019/7/8 ...
- dubbo分布式服务框架-study1
本文参考“如何给老婆解释RPC”一文进行的... 1.首先了解下dubbo: dubbo是一款高性能.轻量级的开源java RPC服务框架(RPC即远程过程调用,具体解释见:https://www.j ...
- Codeforces 1236A. Stones
传送门 注意到两种操作都要消耗中间的石头,并且两种操作每次都会得到 $3$ 个石头 那么显然优先做操作二是最优的,因为操作二只会消耗中间堆的一个石头 如果有剩下再进行操作 $1$ ,那么可以保证总操作 ...