POJ 1734 Sightseeing trip(Floyd)
题目传送门
题目中文翻译:
Description
桑给巴尔岛上的阿德尔顿镇有一家旅行社,它已决定为其客户提供除了许多其他名胜之外的景点。为了尽可能地从景点赚取收入,该机构已经接受了一个精明的决定:有必要找到在同一地点开始和结束的最短路线。你的任务是写一个找到这样的路线的程序。
镇内有N个交叉点,编号从1到N。同时有M条双向路,编号从1到M。两个交叉点可以由多条道路连接,但没有道路将交叉点与自己连接。每条观光环线都是一系列道路编号y_1,...,y_k,k> 2。道路y_i(1 <= i <= k-1)连接交叉点x_i和x_ {i + 1},道路y_k连接交叉点x_k和x_1。所有的数字x_1,...,x_k应该是不同的。观光路线的长度是观光路线上所有道路长度的总和,即L(y_1)+ L(y_2)+ ... + L (y_k)其中L(y_i)是道路y_i的长度(1 <= i <= k)。你的程序必须找到这样一条观光路线,其长度最短,或者说明这是不可能的,因为镇上没有观光环线。
Input
第一行输入包含两个正整数:交叉点N <= 100和道数M <= 10000。 接下来的M行中的每一行描述一条道路。 它包含3个正整数:第一个交点的编号,第二个交点的编号和道路的长度(小于500的正整数)。
Output
输出中只有一行,一个字符串。如果没有任何观光路线,输出'No solution.' 或者列出最短观光路线上所有交叉点的编号,以便让我们知道如何设计路线(即从我们对观光路线的定义中的数字x_1到x_k),由空格分离。如果有多条最小长度的观光路线,您可以输出其中任何一条。
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
解题思路:
本题其实就是求一个图中的最小环的路径.
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int g[105][105],dis[105][105],path[105][105]; 7 //path[i][j]表示i到j的最短路径中j的前一个点 8 //dis[i][j]表示i到j最短的那条路径 9 int n,m,ans[105],mi,cnt; 10 11 inline void chushihua() { 12 for(int i = 1;i <= n; i++) 13 for(int j = 1;j <= n; j++) 14 dis[i][j] = g[i][j] = 0x3f3f,path[i][j] = i; 15 } 16 17 inline void _read() { 18 int u,v,w; 19 for(int i = 1;i <= m; i++) { 20 scanf("%d%d%d",&u,&v,&w); 21 dis[u][v] = dis[v][u] = g[u][v] = g[v][u] = min(w,dis[u][v]); 22 } 23 } 24 25 inline void Floyd() { 26 mi = 0x3f3f; 27 for(int k = 1;k <= n; k++){ 28 for(int i = 1;i < k; i++) 29 for(int j = 1;j < i; j++) { 30 if(dis[i][j] + g[i][k] + g[k][j] < mi) { 31 mi = dis[i][j] + g[i][k] + g[k][j]; 32 int tmp = j; 33 cnt = 0; 34 while(tmp != i) { 35 ans[cnt++] = tmp; 36 tmp = path[i][tmp]; 37 } 38 ans[cnt++] = i; 39 ans[cnt++] = k; 40 } 41 } 42 for(int i = 1;i <= n; i++) 43 for(int j = 1;j <= n; j++) { 44 if(dis[i][k] + dis[k][j] < dis[i][j]) { 45 dis[i][j] = dis[i][k] + dis[k][j]; 46 path[i][j] = path[k][j]; 47 } 48 } 49 } 50 } 51 52 inline void _print() { 53 if(mi == 0x3f3f) 54 printf("No solution."); 55 else { 56 for(int i = 1;i < cnt; i++) 57 printf("%d ",ans[i]); 58 printf("%d",ans[0]); 59 } 60 61 } 62 63 int main()//简洁易懂的主函数 64 { 65 scanf("%d%d",&n,&m); 66 chushihua(); 67 _read(); 68 Floyd(); 69 _print(); 70 return 0; 71 }
转载于:https://www.cnblogs.com/lipeiyi520/p/11290269.html
POJ 1734 Sightseeing trip(Floyd)相关推荐
- poj 1734 Sightseeing trip(floyd 拓展 求最小环)
对于floyd 拓展为什么可以判断 出最小环还是不是太理解 苟且 先贴下模版吧 感谢:心_随_梦_翔 的分析 http://hi.baidu.com/%D0%C4_%CB%E6_%C3%CE_%CF% ...
- POJ - 1734 Sightseeing trip(最小环+输出路径)
题目链接:点击查看 题目大意:给定一张无向图,求图中至少一个包含三个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一 ...
- 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 ...
- POJ 1637 Sightseeing tour(最大流)
POJ 1637 Sightseeing tour 题目链接 题意:给一些有向边一些无向边,问能否把无向边定向之后确定一个欧拉回路 思路:这题的模型很的巧妙,转一个http://blog.csdn.n ...
- URAL 1004 Sightseeing trip
[报告] 非常非常裸的最小环-- 不过我实在是太惊讶了,因为URAL里的太多题目都是有多解的,弄的我郁闷万分.最后只好把别人的给交了. 程序并不是很出色,请不要盲目模仿--这个程序是不能AC的. 说句 ...
- POJ 3165 最短路 floyd
POJ 3165 最短路 floyd http://poj.org/problem?id=3615 dp方程(f[i][j]>MAX(f[i][k],f[k][j])) f[i][j]=MA ...
- Sightseeing trip POJ - 1734 Floyd 最小环
一.内容 There is a travel agency in Adelton town on Zanzibar island. It has decided to offer its client ...
- 【POJ 1734】 Sightseeing Trip
[题目链接] 点击打开链接 [算法] floyd求最小环 输出路径的方法如下,对于i到j的最短路,我们记pre[i][j]表示j的上一步 在进行松弛操作的时候更新pre即可 [代码] #include ...
- POJ 1734 求最小环路径 拓展Floyd
九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11888019 题意: n个点 m条无向边 下面m条有权无向边 问图中最小环的路径 ...
最新文章
- C#清除HTML样式
- java直接内存为什么快_直接内存与 JVM 源码分析
- 3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令
- springboot整合spring Cache(redis)
- MSF(二):msf外部/内部常用命令
- 【渝粤题库】陕西师范大学291003综合英语(三)作业(高起专、高起本)
- 把student a am i 变成 i am a student(两种方法)
- python的命令解析getopt.getopt()函数分析
- SQL必知必会-联结
- 张小龙的区区一件衣服竟然能引起这么大骚动
- Packets 1037A(二进制数)
- 37,字节跳动Python面试
- java中的Stack解析
- 多元思维模型——全学科及其核心思维模型
- java中block标签_[Java教程]Clouda开发随笔之block标签
- latex ctex 中文目录在pdf阅读器的“书签”选项卡中显示乱码的解决方法
- 20221024 matlab快速画图中图
- Apache Hadoop大数据集群及相关生态组件安装
- 用python进行微信分析(带群发功能)
- MP2451 VOUT计算公式 表
热门文章
- phpmyadmin更新php,phpmyadmin 修改记录(不断更新)_PHP教程
- 漫谈物理设计 - Floorplan
- 院士论坛︱李德仁院士:展望大数据时代的地球空间信息学(论文版)
- 计算机组成原理答辩记录表,计算机组成原理答辩论文.doc
- PCI网卡上扩展ROM编程 4.利用8139C网卡读写EPROM
- HCL IRF BFD配置
- 通过curl获取HTTP状态返回码
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day51】—— tomcat
- 节日专访 | Be yourself at Zilliz
- MTK开发板设备树的修改---I2C设备 3.18内核