试题描述
给定一张无向图,求图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。在本题中,你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。若无解,输出 No solution.。图的节点数不超过 100。
输入
第一行两个正整数 n,m 表示点数和边数。
接下来 m 行,每行三个正整数 x,y,z,表示节点 x,y 之间有一条长度为 z 的边。
输出
输出一个最小环的方案:按环上顺序输出最小环上的点。若最小环不唯一,输出任意一个均可。若无解,输出 No solution.
输入示例
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20
输出示例
1 3 5 2

思路:
很难想
我来略为详细的解读一下这道题代码的大致意思
这道题N<=100
所以可以用O(N^3)的Floyd来解决这道题
在每次调度开始前枚举以此点为分别连接i和j能否构成一个环
这样可以避免这个点参与调度
因为这三个点具有三角形的特性 即如1,5通过2连成环,可以变成1,2通过5连成环
注意:一定要在发现这个节点的时候记录整个队列,(我就是因为这个WA了4个点qaq)
上代码~~~~~~~~~~~~~~

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
int n,m,a[105][105],dis[105][105],size[105][105],minn=99999999,x,y,z,que[10000005],q[10000005],tail;
bool book[105];
bool work(ll i,ll j)
{if(!size[i][j]) return true;bool b=work(i,size[i][j]);if(!b) return false;if(book[size[i][j]]) return false;que[++tail]=size[i][j];book[size[i][j]]=1;return work(size[i][j],j);
}
int main()
{scanf("%d%d",&n,&m);memset(a,127,sizeof(a));rep(i,1,n) a[i][i]=0;rep(i,1,m){int u,v,w;scanf("%d%d%d",&u,&v,&w);a[u][v]=a[v][u]=min(w,a[u][v]);}memcpy(dis,a,sizeof(a));rep(k,1,n){rep(i,1,k-1){rep(j,i+1,k-1){if((long long)dis[i][j]+a[i][k]+a[j][k]<minn){ll z=minn,o=tail;minn=dis[i][j]+a[i][k]+a[j][k];tail=0;rep(g,1,o) q[g]=que[g];memset(book,0,sizeof(book));que[++tail]=i;book[i]=1;if(!work(i,j) || book[j] || book[k]){minn=z;tail=o;rep(h,1,o) que[h]=q[h];}    else{que[++tail]=j;que[++tail]=k;}}}}rep(i,1,n){rep(j,1,n){if(dis[i][j]>(long long)dis[i][k]+dis[k][j]) {dis[i][j]=dis[i][k]+dis[k][j];size[i][j]=k;}}}   }if(minn==99999999){printf("No solution.");return 0;}rep(i,1,tail) printf("%d ",que[i]);return 0;
}

POJ1734 sightseeing trip(YBT3201)相关推荐

  1. poj1734 Sightseeing trip (输出最小环路径)

    题意: n个点m条边,如果图中有环,输出最小环路径,否则输出"No solution." 思路: 开一个pre[][]数组 pre[i][j]表示i到j最短路上j的入点(前驱) 每 ...

  2. poj1734 Sightseeing trip[最小环]

    一个最小环裸题.最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的,不想写了. 注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质,来枚举环上最大编 ...

  3. POJ1734 Sightseeing trip floyd求最小环问题

    问题描述 m个点, m条边, 求图中存在的路径最小的环 样例 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 Sa ...

  4. URAL 1004 Sightseeing trip

    [报告] 非常非常裸的最小环-- 不过我实在是太惊讶了,因为URAL里的太多题目都是有多解的,弄的我郁闷万分.最后只好把别人的给交了. 程序并不是很出色,请不要盲目模仿--这个程序是不能AC的. 说句 ...

  5. 【POJ1734】Sightseeing Trip 无向图最小环

    题目大意:给定一个 N 个顶点的无向图,边有边权,如果存在,求出该无向图的最小环,即:边权和最小的环,并输出路径. 题解:由于无向图,且节点数较少,考虑 Floyd 算法,在最外层刚开始遍历到第 K ...

  6. Sightseeing trip POJ - 1734 Floyd 最小环

    一.内容 There is a travel agency in Adelton town on Zanzibar island. It has decided to offer its client ...

  7. PKU1734 sightseeing trip

    最近我跟回路干上了-- 今天是一道最小回路问题.大家不难想到朴素的超时算法,那么我们应该如何优化呢?方法就是FLOYD算法. 有人对这个东西不屑一顾--因为它基础,因为它的高复杂度--但是当数据量在三 ...

  8. POJ - 1734 Sightseeing trip(最小环+输出路径)

    题目链接:点击查看 题目大意:给定一张无向图,求图中至少一个包含三个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一 ...

  9. poj 1734 Sightseeing trip(floyd 拓展 求最小环)

    对于floyd 拓展为什么可以判断 出最小环还是不是太理解 苟且 先贴下模版吧 感谢:心_随_梦_翔 的分析 http://hi.baidu.com/%D0%C4_%CB%E6_%C3%CE_%CF% ...

最新文章

  1. 华为服务器显示403,禁止访问403是什么意思 网页提示403怎么解决
  2. Qt工作笔记-使用QCustomplot实现鼠标拖动数据点画曲线
  3. MOSS字段编辑权限控制方案(2)-添加管理链接
  4. tcpdump实战详解
  5. 线性筛法--------2013年1月2日
  6. Python 获取URL访问的HEAD头信息
  7. 信道容量受哪三个要素_好的餐饮店门头招牌应该怎么设计呢?需要具备哪些要素?...
  8. linux系统中rsync的安装和使用,以及配置rsync开机启动
  9. ps黑作坊终极天空大师 一键换天空终极版破解版扩展面板
  10. 微信公众号开发(个人订阅号)
  11. 怎样自建邮件服务器,简单快速搭建邮件服务器
  12. ctf镜子里面的世界_一个小编姐姐的CTF入坑之旅
  13. Qt编写自定义控件65-光晕日历
  14. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发
  15. 如何优雅的面对一坨翔~~感悟编程代码
  16. 2022-05-14前端周报 巴厘岛项目交接完成
  17. 搭建speedtest server
  18. 7-Zip 解/压缩软件的介绍及入门使用
  19. 嵌入式系统(一)概述
  20. 阿里云轻量应用服务器环境搭建-Docker安装tomcat

热门文章

  1. 初学MyBatis(踩坑)Error querying database.
  2. java -谈谈我对面向对象的理解,private的意义
  3. 【书签百宝箱】技术宅收藏积累的所有实用性网站、技术教程、工具网站大全(长期更新...)
  4. 几种分布式网络性能分析方法(基于交易图,Transaction graphs)
  5. frp内网穿透容器化快速部署
  6. fatal error C1107: 未能找到程序集“AdWindows.dll”
  7. 怎样提取PDF奇数页面
  8. 开发运营必看,跳出雷区必须知道的微信小程序平台运营规范
  9. APP界面设计:移动缺省页如何设计才会内容“丰富友好”?
  10. 杰里之使用 sdk 自带协议进行 OTA 升级【篇】