题目传送门

题目中文翻译:

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代码:

 #include<cstdio>
#include<iostream> using namespace std; int g[][],dis[][],path[][];
//path[i][j]表示i到j的最短路径中j的前一个点
//dis[i][j]表示i到j最短的那条路径
int n,m,ans[],mi,cnt; inline void chushihua() {
for(int i = ;i <= n; i++)
for(int j = ;j <= n; j++)
dis[i][j] = g[i][j] = 0x3f3f,path[i][j] = i;
} inline void _read() {
int u,v,w;
for(int i = ;i <= m; i++) {
scanf("%d%d%d",&u,&v,&w);
dis[u][v] = dis[v][u] = g[u][v] = g[v][u] = min(w,dis[u][v]);
}
} inline void Floyd() {
mi = 0x3f3f;
for(int k = ;k <= n; k++){
for(int i = ;i < k; i++)
for(int j = ;j < i; j++) {
if(dis[i][j] + g[i][k] + g[k][j] < mi) {
mi = dis[i][j] + g[i][k] + g[k][j];
int tmp = j;
cnt = ;
while(tmp != i) {
ans[cnt++] = tmp;
tmp = path[i][tmp];
}
ans[cnt++] = i;
ans[cnt++] = k;
}
}
for(int i = ;i <= n; i++)
for(int j = ;j <= n; j++) {
if(dis[i][k] + dis[k][j] < dis[i][j]) {
dis[i][j] = dis[i][k] + dis[k][j];
path[i][j] = path[k][j];
}
}
}
} inline void _print() {
if(mi == 0x3f3f)
printf("No solution.");
else {
for(int i = ;i < cnt; i++)
printf("%d ",ans[i]);
printf("%d",ans[]);
} } int main()//简洁易懂的主函数
{
scanf("%d%d",&n,&m);
chushihua();
_read();
Floyd();
_print();
return ;
}

POJ 1734 Sightseeing trip(Floyd)的更多相关文章

  1. poj 1734 Sightseeing trip判断最短长度的环

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5590   Accepted: 2151 ...

  2. POJ 1734.Sightseeing trip (Floyd 最小环)

    Floyd 最小环模板题 code /* floyd最小环,记录路径,时间复杂度O(n^3) 不能处理负环 */ #include <iostream> #include <cstr ...

  3. POJ 1734 Sightseeing trip

    题目大意: 求一个最小环. 用Floyd 求最小环算法. #include <iostream> #include <cstdlib> #include <cstdio& ...

  4. POJ 1734 Sightseeing trip(无向图最小环+输出路径)

    题目链接 #include <cstdio> #include <string> #include <cstring> #include <queue> ...

  5. poj 1734 Sightseeing trip_ 最小环记录路径

    题意:求最出小环,输出路径 #include <iostream> #include<cstdio> using namespace std; #define N 110 #d ...

  6. #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)

    https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...

  7. poj1734 Sightseeing trip(Floyd求无向图最小环)

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  8. Sightseeing trip POJ - 1734 -Floyd 最小环

    POJ - 1734 思路 : Floyd 实质 dp ,优化掉了第三维. dp [ i ] [ j ] [ k ] 指的是前k个点优化后    i  ->  j   的最短路. 所以我们就可以 ...

  9. POJ 1734:Sightseeing trip

    Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Special Judge ...

随机推荐

  1. 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)

    未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...

  2. 读书笔记 - js高级程序设计 - 第十章 DOM

      文档元素 是文档的最外层元素,在Html页面中,文档元素始终都是<html>元素 在xml中,任何元素都可以是文档元素 Node类型 Node.ELEMENT_NODE 元素 Node ...

  3. 关于 python 中 虚拟环 virtualen境的操作

    python3.X安装和pip安装方法 pip install -i https://pypi.douban.com/simple XXX 1.安装virtualenv pip install vir ...

  4. tkinter组件详解之Label

    tkinter组件详解之Label Label组件用于在屏幕上显示文本或图像.最红呈现出的结果是由背景和前景叠加构成的. 函数定义:Label(master=None, cnf={}, **kw) 背 ...

  5. tomcat迁移到weblogic的几个问题

    第1个问题: 异常描述:VALIDATION PROBLEMS WERE FOUND problem: cvc-enumeration-valid: string value '3.0' is not ...

  6. CSS 弹性盒子 flex的三个属性:grow、shrink、basis

    flex-grow 首先介绍flex-grow属性,flex-grow会在容器太大时(图片A.B的宽度和 < 父容器宽度)对元素作出调整. 如果图片A的flex-grow属性的值为 1,图片B的 ...

  7. 第二阶段scrum-3

    1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 前端制作完成,数据库正在配置

  8. 关于Pytorch中autograd和backward的一些笔记

    参考自<Pytorch autograd,backward详解>: 1 Tensor Pytorch中所有的计算其实都可以回归到Tensor上,所以有必要重新认识一下Tensor. 如果我 ...

  9. 关于构造函数中的this()和super()

    今天看到一个这段代码 public DataSourcePool(String driver, String url, String user, String pwd) throws Exceptio ...

  10. oracle (6)---SQL 数据关联查询

    SQL 数据关联查询 Structure Query Language 从多(n)张表查询对应记录信息,必须有至少n-1个关联条件,否则会出现笛卡尔积的情况.1. 等值连接:没有连接关系的数据不会被查 ...