HDU1599杭州旅游

P2457 - 【HDU1599】杭州旅游

Description

杭州有 N 个景区, 景区之间有一些双向的路来连接, 现在 8600 想找一条旅游路线, 这 个路线从 A 点出发并且最后回到 A 点。

假设经过的路线为 V1,V2,....VK,V1,那么必须满足 K>2,就是说至除了出发点以外至少要经
过 2 个其他不同的景区, 而且不能重复经过同一个景区。 现在 8600 需要你帮他找一条这样
的路线, 并且花费越少越好。

Input

第一行是 2 个整数 N 和 M( N <= 800, M <= 600000), 代表景区的个数和道路的条数。

接下来的 M 行里, 每行包括 3 个整数 a,b,c.代表 a 和 b 之间有一条通路, 并且需要花费
c 元(c <= 10000)。

Output

如果能找到这样一条路线的话, 输出花费的最小值。 如果找不到的话, 输出 "It‘s
impossible." (没有双引号)

Sample Input

输入样例1:

3 3

1 2 1

2 3 1

1 3 1

输入样例2:

3 3

1 2 1

1 2 3

2 3 1

Sample Output

输出样例1:

3

输出样例2:

It‘s impossible.

Hint

【数据范围】

对于 40%的数据: 2 <= n < 100, m<=10000

对于 100%的数据: n <= 800, m<=600000

Source

最小环

最小环,用Floyed即可

 1 /* QYP kuai wo dai ma*/
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<iomanip>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<cstdio>
 8 #include<queue>
 9 #include<ctime>
10 #include<cmath>
11 #include<stack>
12 #include<map>
13 #include<set>
14 #define rep(i,a,b) for(register int i=a;i<=b;i++)
15 #define ll long long
16 #define re register
17 #define inf 1<<29
18 using namespace std;
19 const int N=810,M=600010;
20 int n,m,ans=inf;
21 int d[N][N],g[N][N];
22 inline int gi() {
23     re int res=0;
24     char ch=getchar();
25     while(ch<‘0‘||ch>‘9‘) ch=getchar();
26     while(ch>=‘0‘&&ch<=‘9‘) res=res*10+ch-‘0‘,ch=getchar();
27     return res;
28 }
29 void Floyed() {
30     rep(k,1,n) {
31         rep(i,1,k-1)
32             rep(j,i+1,k-1)
33               ans=min(ans,d[i][j]+g[i][k]+g[k][j]);
34         rep(i,1,n)
35             rep(j,1,n)
36               d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
37     }
38 }
39 int main() {
40     freopen("zdlcs.in","r",stdin);
41     freopen("zdlcs.out","w",stdout);
42     n=gi(),m=gi();
43     memset(g,127/3,sizeof(g));
44     rep(i,1,n)
45         rep(j,1,n)
46           if(i!=j)
47                 d[i][j]=inf;
48     rep(i,1,m){
49         re int u=gi(),v=gi(),w=gi();
50         if(g[u][v]<=w) continue;
51         g[u][v]=g[v][u]=w;
52         d[u][v]=d[v][u]=w;
53     }
54     Floyed();
55     if(ans==inf) puts("It‘s impossible.");
56     else
57     printf("%d",ans);
58 }

时间: 2024-10-10 03:39:46

HDU1599杭州旅游的相关文章

Floyd最小环Hdu1599

http://acm.hdu.edu.cn/showproblem.php?pid=1599 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include <cstdio> #include <cstdlib

给你的杭州旅游攻略-愿你走出半生,归来仍是姑娘

给你的杭州旅游攻略 -- 愿你走出半生,归来仍是姑娘 来杭州玩,西湖不用说,你肯定要的去啦.但是周末和节假日,不懂的人玩的地方都是人山人海.所以为了避免看人头呢,你可以到人少的景点,比如: 首先推荐柳浪闻莺啦,走进柳浪闻莺,会有一条曲径小道,那边人相对比较少,夏天走里面特别好,种满了嫩绿的翠柳,轻吻你的额头,坐在柳树下的长木椅上,看着平静的湖面,心也跟着一下子平静下来,坐在树荫下,吹着风,很是凉快.你也可以在灌木丛林走走,去听鸟儿歌唱. 如果杭州下雪,去断桥看看雪后的西湖,真的是美的没话说,树枝

[HDU1599]find the mincost route

Description [HDU1599]find the mincost route Solution 恶补图论,最小环问题的板子题 \(floyd\)来判最小环,复杂度\(O(n^3)\) 枚举\(k\)从\(1\)到\(n\) 最小环的\(i\)从\(1\)到\(k-1\),\(j\)从\(1\)到\(i-1\) 令\(ans=min(ans,f[i][j]+a[i][k]+a[k][j])\) 同时维护最短路数组的\(i\)从\(1\)到\(n\),\(j\)从\(1\)到\(n\) C

hdu1599 find the mincost route floyd求出最小权值的环

find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3456    Accepted Submission(s): 1409 Problem Description 杭 州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为

hdu----(1599)最大子矩阵(几何/dp)

最大子矩阵 Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2915    Accepted Submission(s): 1462 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大. Input 输 入数据的第一行为一个正整数T,表示有T组测试数据.每一组测试数

hdu1599

链接:点击打开链接 题意:有一些景点,看其中能从一个景点走至少要经过2个其他不同的景区,而且不能重复经过同一个景区,每条路线需要一些花费,找出一条花费最少的路线,如果不能输出It's impossible. 代码: #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #define maxx 99999999 using namespace std;

第七节 继承、抽象类和接口

继承的概述 代码示例: class Person{ // 父类 String name; int age; char sex; String idcard; } class Students extends Person{ //子类 继承 父类的属性 public void study(){ System.out.println("好好学习"); } } class Worker extends Person{ //子类 继承 父类的属性 /* 我们通过继承的方式,可以省略掉Worke

从“骗子”到“互联网巨头”的兑变:马云是如何做到的!

摘要:从"骗子"到"互联网巨头"的兑变:马云是如何做到的!阿里巴巴集团董事会主席马云的成功绝非偶然的,有着令人震惊的传奇经历. 文/辛东方,80后作家.专栏作者.专注互联网科技领域 据调查得知,马云1988年毕业于杭州师范学院外语系,这可是80年代的大学生,在当时是非常稀缺的.另外再看看他大学期间获得的荣誉:凭借出色的英语稳坐外语系前五名.之后当选学生会主席,而且还连担任了两届杭州市学联主席. 在创办阿里巴巴之前,马云就已经非常出色优秀了,相比一般学生而言,这是非常

最短路径问题小结

最短路径问题包括: 1.单源最短路. 2.任意两点间的最短路. 3.次短路和k短路. 4.差分约束系统. 5.DAG图上的单源最短路. 6.最小环. 一.单源最短路 算法: Dijkstra . Bellman - Ford .SPFA Dijkstra: 除了路径记录和更新距离数组的部分意外,和Prim算法的实现完全一样.使用邻接矩阵建图,时间复杂度为O(n*n).使用邻接表可能会快一些.堆优化比较麻烦,没学.缺点是图中不能含有负圈. Bellman - Ford :可以处理负圈.以链式前向星