Sightseeing Trip

Time limit: 0.5 second
Memory limit: 64 MB
There is a travel agency in Adelton town on Zanzibar island. It has decided to
offer its clients, besides many other attractions, sightseeing the town. To
earn as much as possible from this attraction, the agency has accepted a
shrewd decision: it is necessary to find the shortest route which begins and
ends at the same place.
Your task is to write a program which finds such a route.
In the town there are N crossing points numbered from 1 to N and M two-way
roads numbered from 1 to M. Two crossing points can be connected by multiple
roads, but no road connects a crossing point with itself. Each sightseeing
route is a sequence of road numbers y1, …, yk, k > 2. The road yi
(1 ≤ ik − 1) connects crossing points xi and xi+1, the road yk connects
crossing points xk and x1. All the numbers x1, …, xk should be different.
The length of the sightseeing route is the sum of the lengths of all roads on
the sightseeing route, i.e. L(y1) + L(y2) + … + L(yk) where L(yi) is the
length of the road yi (1 ≤ ik). Your program has to find such a sightseeing
route, the length of which is minimal, or to specify that it is not possible,
because there is no sightseeing route in the town.

Input

Input contains T tests (1 ≤ T ≤ 5).
The first line of each test contains two integers: the
number of crossing points N and the number of roads M (3 ≤ N ≤ 100; 3 ≤ MN · (N − 1)).
Each of the next M lines describes one road. It contains 3 integers: the number
of its first crossing point a, the number of the second one b, and the length of the road l (1 ≤ a, bN; ab; 1 ≤ l ≤ 300). Input is ended with a “−1” line.

Output

Each line of output is an answer. It contains either a string
“No solution.” in case there isn't any sightseeing route, or it contains the
numbers of all crossing points on the shortest sightseeing route in the order
how to pass them (i.e. the numbers x1 to xk from our definition of a
sightseeing route), separated by single spaces. If there are multiple
sightseeing routes of the minimal length, you can output any one of them.

Sample

input output
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20
4 3
1 2 10
1 3 20
1 4 30
-1
1 3 5 2
No solution.
Problem Source: Central European Olympiad in Informatics 1999
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
typedef long long ll;
using namespace std;
const int N = 1e2+;
const int M = ;
const int INF=0x7ffffff;
int dist[N][N], w[N][N];
int pre[N][N];
int path[N];
int n, m, num, minc; void floyd() {
minc=INF;
for(int k=; k<=n; k++) {
for(int i=; i<k; i++)
for(int j=i+; j<k; j++) {
int ans=dist[i][j]+w[i][k]+w[k][j];
if(ans<minc) { //找到最优解
minc=ans;
num=;
int p=j;
while(p!=i) { //逆向寻找前驱遍历的路径并将其存储起来
path[num++]=p;
p=pre[i][p];
}
path[num++]=i;
path[num++]=k;
}
}
for(int i=; i<=n; i++)
for(int j=; j<=n; j++) {
if(dist[i][j]>dist[i][k]+dist[k][j]) {
dist[i][j]=dist[i][k]+dist[k][j];
pre[i][j]=pre[k][j];
}
}
}
} int main() {
int u, v, cost;
while(cin >> n) {
if(n<) break;
cin >> m;
for(int i=; i<=n; i++)
for(int j=; j<=n; j++) {
dist[i][j]=w[i][j]=INF;
pre[i][j]=i;
}
for(int i=; i<=m; i++) {
scanf("%d%d%d",&u,&v,&cost);
if(dist[u][v]>cost) //处理重边
w[u][v]=w[v][u]=dist[u][v]=dist[v][u]=cost;
}
floyd();
if(minc==INF)
printf("No solution.\n");
else {
printf("%d",path[]);
for(int i=; i<num; i++)
printf(" %d",path[i]);
puts("");
}
}
return ;
}

URAL 1004 Sightseeing Trip(最小环)的更多相关文章

  1. Ural 1004 Sightseeing Trip

    Sightseeing Trip Time Limit: 2000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...

  2. URAL 1004 Sightseeing Trip(floyd求最小环+路径输出)

    https://vjudge.net/problem/URAL-1004 题意:求路径最小的环(至少三个点),并且输出路径. 思路: 一开始INF开大了...无限wa,原来相加时会爆int... 路径 ...

  3. poj1734 Sightseeing trip[最小环]

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

  4. poj1734 Sightseeing trip【最小环】

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:8588   Accepted:3224   ...

  5. 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd

    题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方 ...

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

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

  7. 【poj1734】Sightseeing trip

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8520   Accepted: 3200 ...

  8. POJ 1734:Sightseeing trip

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

  9. [CEOI1999]Sightseeing trip(Floyed)

    [CEOI1999]Sightseeing trip Description There is a travel agency in Adelton town on Zanzibar island. ...

随机推荐

  1. SharePoint加K2,将Portal系统与BPM系统完美整合!

    K2 blackPearl与Microsoft Office SharePoint 一起为解决人员和流程相互合作的解决方案而提供一个强大的平台. K2“blackpearl”根据企业的需求提供了设计, ...

  2. DotNetBar v14.0.0.3 Fully Cracked

    更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=14.0.0.3 如果遇到破解问题可以与我 ...

  3. vs2012 .netFramwork2.0发布到xp

    开发环境 windows server2008R2 VS2012  .net Framwork2.0 开发的winform程序 在有的xp系统下不能运行 选择 项目属性=>编译 Build=&g ...

  4. c# access插入null值

    c# 插入access数据库 提示错误: Parameter @DeviceLocation has no default value. 参数@DeviceLocation 的有没有默认值. Stri ...

  5. HTML5实战教程———开发一个简单漂亮的登录页面

    最近看过几个基于HTML5开发的移动应用,比如臭名昭著的12036移动客户端就是主要使用HTML5来实现的,虽然还是有点反应迟钝,但已经比较流畅了,相信随着智能手机的配置越来越高性能越来越好,会越来越 ...

  6. Xcode如何查看内存中的数据

    在  debug 模式下如何在断点处,查看字符指针变量内存中的值,像vs2008的调试工具一样的内存查看器,现在只能查看第一个内存中的值可以在输出窗口采用gdb命令:x /nfu <addr&g ...

  7. VS2010编译Qt5.4.0静态库

    http://www.kavenblog.com/?p=375 1.Qt的跨平台十分优秀,但是在Windows上是还是会有许多问题,其中之一就是动态链接库的问题,Qt程序的发布必须带一个体积不小的DL ...

  8. 偶遇makeblock

    上周出去吃饭在公交站牌上看到一家叫“创客工场”的公司在打招聘广告,当时在想这公司有钱啊,广告都打到这儿了,也没细想让韩总扫了一下他们的二维码,回来搜了一下这个公司,我靠,是做开源硬件的:再一看各种机器 ...

  9. 解决:未找到setenv命令

    在Ubuntu12.04中配置python环境变量:setenv PATH "$PATH:/usr/local/bin/python",提示未找到setenv命令. 为什么呢?这是 ...

  10. "无意义"的div和span标签

    HTML <div> 元素是块级元素,它是可用于组合其他 HTML 元素的容器.<div>元素没有特定的含义.除此之外,由于它属于块级元素,浏览器会在其前后显示折行.如果与 C ...