最近我跟回路干上了……

今天是一道最小回路问题。大家不难想到朴素的超时算法,那么我们应该如何优化呢?方法就是FLOYD算法。

有人对这个东西不屑一顾——因为它基础,因为它的高复杂度……但是当数据量在三位数时基本可以发挥出它的最大功力!FLOYD不仅仅是求最短路的工具,我们从它身上体会出动态规划的思想,将其应用于传递闭包,找强连通分量,求任意点对之间最短路个数,找最小回路。

找最小回路是在求得最短路之前顺便求出的,而且其思想跟FLOYD求最短路的本质是一样的,所以不难理解。另外在记录路径时稍稍留心一下就好了!

program sightseeing; const inf=10000000; maxn=100; msg='No solution.'; var g,dist,p:array[0..maxn,0..maxn] of longint; route:array[0..maxn] of longint; n,m,tot,ans:longint; procedure prework; var i:longint; begin ans:=inf shl 1; filldword(g,sizeof(g) shr 2,inf); for i:=1 to maxn do begin g[i,i]:=0; p[i,i]:=i; end; end; procedure init; var a,b,w,i:longint; begin readln(n,m); for i:=1 to m do begin readln(a,b,w); if w<g[a,b] then begin g[a,b]:=w; p[a,b]:=a; g[b,a]:=w; p[b,a]:=b; end; end; end; procedure find(i,j:longint); begin if p[i,j]=i then begin inc(tot); route[tot]:=j; end else begin find(i,p[i,j]); find(p[i,j],j); end; end; procedure floyd; var i,j,k:longint; begin dist:=g; for k:=1 to n do begin for i:=1 to k-1 do for j:=i+1 to k-1 do if ans>g[i,k]+g[k,j]+dist[i,j] then begin ans:=g[i,k]+g[k,j]+dist[i,j]; if ans<inf then begin tot:=0; inc(tot); route[tot]:=i; find(i,j); inc(tot); route[tot]:=k; end; end; for i:=1 to n do for j:=1 to n do if dist[i,j]>dist[i,k]+dist[k,j] then begin dist[i,j]:=dist[i,k]+dist[k,j]; p[i,j]:=k; end; end; end; procedure outit; var i:longint; begin if ans>=inf then writeln(msg) else begin for i:=1 to tot-1 do write(route[i],' '); writeln(route[tot]); end; end; begin prework; init; floyd; outit; end.

PKU1734 sightseeing trip相关推荐

  1. URAL 1004 Sightseeing trip

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

  2. Sightseeing trip POJ - 1734 Floyd 最小环

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

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

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

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

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

  5. 【POJ 1734】 Sightseeing Trip

    [题目链接] 点击打开链接 [算法] floyd求最小环 输出路径的方法如下,对于i到j的最短路,我们记pre[i][j]表示j的上一步 在进行松弛操作的时候更新pre即可 [代码] #include ...

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

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

  7. POJ1734 sightseeing trip(YBT3201)

    试题描述 给定一张无向图,求图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一,输出任意一个均 ...

  8. POJ 1734 Sightseeing trip(Floyd)

    题目传送门 题目中文翻译: Description 桑给巴尔岛上的阿德尔顿镇有一家旅行社,它已决定为其客户提供除了许多其他名胜之外的景点.为了尽可能地从景点赚取收入,该机构已经接受了一个精明的决定:有 ...

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

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

最新文章

  1. Microsoft Azure Express Route (专线直连)到云端数据中心(2)
  2. syslog(),closelog()与openlog()--日志操作函数
  3. 在linux系统下用rpm查看安装信息,rpm的查询命令
  4. 初学python之路-day15
  5. stage3图书管理系统服务器部署
  6. 《为何爱会伤人》-读书笔记
  7. android重要的对象
  8. visio业务流程图教学_Visio流程图入门
  9. 提取小米主题内部的桌面锁屏壁纸图片步骤
  10. shell while用法
  11. 特征检测和特征提取算子
  12. 同源时钟/同步时钟/异步时钟/同源时钟之间时序约束/clk group
  13. 第一款个人应用——《不做手机控》——终于上线啦!
  14. Excel技巧【标记多行数据连续一样的行】【第一个单元格公式适用于所有本列所有行】【按照逗号分列】【快速统计出各个项出现的次数】【冻结窗口】[表格分段选择数据][根据单元格内容引索其他单元格数据指针]
  15. java.util工具类之Currency类
  16. 苹果,U盘越狱iPhone绕ID最新教程及各种坑解决,吐血之作(超详细超简单教程)-balenaEtcher-Checkm8-bootra1n
  17. 护肤品买了这么多还是不见好转,钱都去哪里了?
  18. 2023年上学期学习计划
  19. Flask+BootStrap+SQLite+ECharts编写的教学问卷调查系统
  20. python中对象的特性_python面对对象-三大特性

热门文章

  1. 【java篇】Java到底是值传递还是引用传递?
  2. 李德仁院士:在夜光遥感数据中挖掘民生相关的信息
  3. js 解决在当前页面下载文档问题
  4. NDK Clang 编译 FFmpeg 4.4.1 + fdk-aac 2.0.2 + x264 20191217
  5. layui数据表格显示不全(火狐)
  6. 程序员的自我修养之数学基础04:特殊矩阵(零矩阵、单位矩阵、对角矩阵、逆矩阵、转置矩阵、对称矩阵)
  7. JAVA 将MultipartFile file转换成为File
  8. 微信JS-SDK集成与使用
  9. C#,WINFORM,随机数生成,摇号器(初步作品)
  10. 数据库语言SQL:事务,锁,索引