URAL 1004 Sightseeing Trip(最小环)
Sightseeing Trip
Memory limit: 64 MB
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.
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 ≤ i ≤ k − 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 ≤ i ≤ k). 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
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 ≤ M ≤ N · (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, b ≤ N; a ≠ b; 1 ≤ l ≤ 300). Input is ended with a “−1” line.
Output
“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 3 5 2 |
#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(最小环)的更多相关文章
- Ural 1004 Sightseeing Trip
Sightseeing Trip Time Limit: 2000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...
- URAL 1004 Sightseeing Trip(floyd求最小环+路径输出)
https://vjudge.net/problem/URAL-1004 题意:求路径最小的环(至少三个点),并且输出路径. 思路: 一开始INF开大了...无限wa,原来相加时会爆int... 路径 ...
- poj1734 Sightseeing trip[最小环]
一个最小环裸题.最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的,不想写了. 注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质,来枚举环上最大编 ...
- poj1734 Sightseeing trip【最小环】
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions:8588 Accepted:3224 ...
- 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd
题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方 ...
- poj 1734 Sightseeing trip判断最短长度的环
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5590 Accepted: 2151 ...
- 【poj1734】Sightseeing trip
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8520 Accepted: 3200 ...
- POJ 1734:Sightseeing trip
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Special Judge ...
- [CEOI1999]Sightseeing trip(Floyed)
[CEOI1999]Sightseeing trip Description There is a travel agency in Adelton town on Zanzibar island. ...
随机推荐
- Object Oriented Programming python
Object Oriented Programming python new concepts of the object oriented programming : class encapsula ...
- 通过使用ScriptManager.RegisterStartupScript,呈现后台多次使用alert方法
在前台HTML中加入alert或者confirm,相信大家已经非常熟悉并且经常使用: <div onclick="alert('hello')">按钮1</div ...
- IT人才最容易犯的17个错误--人生警言
转载 记得刚参加工作时(那是97年),中国的IT刚刚兴起,那时,作为一个IT人士是一件很光荣的事,而那时的我正在做电气和电子相关的工作.99年第一次跳槽,进入了IT行业做软件开发.至今,中国的IT已经 ...
- git vs svn
http://www.tuicool.com/articles/e2MnAb Git与SVN的不同之处 svn为集中化的版本控制,svn获取最新的版本或者提交更新,历史记录等信息每次都要连接中央版本库 ...
- hdu 2056
ps: - -惭愧...是套用一个大神的计算方法来做的.....下面是代码 代码: #include "stdio.h"#include "stdlib.h&quo ...
- MapReduce 实现数据join操作
前段时间有一个业务需求,要在外网商品(TOPB2C)信息中加入 联营自营 识别的字段.但存在的一个问题是,商品信息 和 自营联营标示数据是 两份数据:商品信息较大,是存放在hbase中.他们之前唯一的 ...
- UIApplication 概述
原文地址:http://blog.csdn.net/lixing333/article/details/7777015 以前刚学iPhone开发时,觉得UIApplication这个东西特NB,特神秘 ...
- Palindrome Number ---- LeetCode 009
Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negativ ...
- Android Studio And Gradle
AS特色: 智能感知体验特好,堪比VS 布局预览,手写布局后预览页面即时显示,便于布局调整和优化 编辑速度飞快流畅,毫无eclipse的卡顿 布局或源码中有图标和颜色的预览,十分直观 调试时体验极佳 ...
- HDU 1080
http://acm.hdu.edu.cn/showproblem.php?pid=1080 二维最长公共子序列 #include <iostream> #include <cstd ...