【最短路】Vijos P1046 观光旅游

题目链接:

  https://vijos.org/p/1046

题目大意

  给n个点(n<=100),m条无向边(m<=10000),问这张图的最小环长度。

  (注意:无自环,同一个点对之间的多条路最终只算作1条而不是2个点的环,被这里坑了一次)

题目思路:

  【最短路】

  无向图最小环问题。

  有向图最小环的长度为2,但是这题因为是无向图,所以环的长度至少为3。所以可以枚举k为中间点,求i到j不经过k的最短路最后加上Di,k和Dk,j即为答案。

  用floyd,时间复杂度是O(n3).

 1 //
 2 //by coolxxx
 3 //
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<string>
 7 #include<iomanip>
 8 #include<memory.h>
 9 #include<time.h>
10 #include<stdio.h>
11 #include<stdlib.h>
12 #include<string.h>
13 #include<stdbool.h>
14 #include<math.h>
15 #define min(a,b) ((a)<(b)?(a):(b))
16 #define max(a,b) ((a)>(b)?(a):(b))
17 #define abs(a) ((a)>0?(a):(-(a)))
18 #define lowbit(a) (a&(-a))
19 #define sqr(a) ((a)*(a))
20 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
21 #define eps 1e-8
22 #define J 10000
23 #define MAX 0x7f7f7f7f
24 #define PI 3.1415926535897
25 #define N 104
26 using namespace std;
27 int n,m,lll,ans,cas;
28 int map[N][N],f[N][N];
29 void floyd()
30 {
31     int i,j,k;
32     for(k=1;k<=n;k++)
33     {
34         for(i=1;i<k;i++)
35         {
36             if(map[i][k]==MAX)continue;
37             for(j=i+1;j<k;j++)
38             {
39                 if(map[k][j]==MAX || f[i][j]==MAX)continue;
40                 cas=f[i][j]+map[i][k]+map[k][j];
41                 ans=min(ans,cas);
42             }
43         }
44         for(i=1;i<=n;i++)
45         {
46             if(f[i][k]==MAX || i==k)continue;
47             for(j=1;j<=n;j++)
48                 if(f[k][j]!=MAX && i!=j && j!=k)
49                     f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
50         }
51     }
52 }
53 int main()
54 {
55     #ifndef ONLINE_JUDGE
56 //    freopen("1.txt","r",stdin);
57 //    freopen("2.txt","w",stdout);
58     #endif
59     int i,j,k,x,y,z;
60 //    while(~scanf("%s",s1))
61     while(~scanf("%d",&n))
62     {
63         memset(map,0x7f,sizeof(map));
64         scanf("%d",&m);
65         ans=MAX;
66         for(i=1;i<=m;i++)
67         {
68             scanf("%d%d%d",&x,&y,&z);
69             map[y][x]=map[x][y]=min(map[x][y],z);
70         }
71         memcpy(f,map,sizeof(map));
72         floyd();
73         if(ans!=MAX)printf("%d\n",ans);
74         else puts("No solution.");
75     }
76     return 0;
77 }
78
79
80 /*
81 //
82
83 //
84 */

时间: 2024-10-17 06:58:26

【最短路】Vijos P1046 观光旅游的相关文章

如何做好农业观光旅游规划和农业休闲旅游开发?

熊大寻旅游规划公司/文 农业旅游是一种新型农业生产经营形式 ,也是一种新型旅游活动项目 ,是在发展农业生产的基础上有机地附加了生态旅游观光功能的交叉性产业 ,是当今旅游新需求的必然产物.农业生态旅游是把农业.生态和旅游业结合起来,利用田园景观.农业生产活动.农村生态环境和农业生态经营模式,吸引游客前来观赏.品尝.作习.体验.健身.科学考察.环保教育.度假.购物的一种新型的旅游开发类型.生态农业旅游是近几年才兴起的一种新型的旅游方式,人们多居住在城市里面,对于农村的概念越来越模糊.所以根据人们返璞

vijos 观光旅游 最小环fl 呆详看

背景 湖南师大附中成为百年名校之后,每年要接待大批的游客前来参观.学校认为大力发展旅游业,可以带来一笔可观的收入. 描述 学校里面有N个景点.两个景点之间可能直接有道路相连,用Dist[I,J]表示它的长度:否则它们之间没有直接的道路相连.这里所说的道路是没有规定方向的,也就是说,如果从I到J有直接的道路,那么从J到I也有,并且长度与之相等.学校规定:每个游客的旅游线路只能是一个回路(好霸道的规定).也就是说,游客可以任取一个景点出发,依次经过若干个景点,最终回到起点.一天,Xiaomengxi

Vijos1046观光旅游[floyd 最小环]

背景 湖南师大附中成为百年名校之后,每年要接待大批的游客前来参观.学校认为大力发展旅游业,可以带来一笔可观的收入. 描述 学校里面有N个景点.两个景点之间可能直接有道路相连,用Dist[I,J]表示它的长度:否则它们之间没有直接的道路相连.这里所说的道路是没有规定方向的,也就是说,如果从I到J有直接的道路,那么从J到I也有,并且长度与之相等.学校规定:每个游客的旅游线路只能是一个回路(好霸道的规定).也就是说,游客可以任取一个景点出发,依次经过若干个景点,最终回到起点.一天,Xiaomengxi

Codevs 2611 观光旅游

时间限制: 1 s 空间限制: 128000 KB 题目等级:钻石 题目描述 Description 某旅游区里面有N个景点.两个景点之间可能直接有道路相连,用a[i][j]表示它的长度,否则它们之间没有直接的道路相连.这里所说的道路是没有规定方向的,也就是说,如果从i到j有直接的道路,那么从j到i也有,并且长度与之相等. 旅游区规定:每个游客的旅游线路只能是一个回路(好霸道的规定).也就是说,游客可以任取一个景点出发,依次经过若干个景点,最终回到起点.一天,Smart决定到这个景区来旅游,由于

观光旅游

[题目描述] 旅游区里有N个景点.两个景点之间可能存在长度为A的双向道路. 旅游区规定,每个游客的旅游线路只能是一个回路.小明来到这里旅游,希望尽量少走一些路,请你帮他求出最优路线长度. [输入描述] 输入有多组数据,对于每组数据: 第一行输入两个正整数N.M,表示景点个数,以及有多少对景点之间存在道路(N ≤ 100,M ≤ 10000): 接下来M行,每行输入三个正整数,表示一条道路的两端的景点编号,以及这条道路的长度( ≤ 1000). [输出描述] 对于每组数据,如果该回路存在,则输出一

vijos 1741 观光公交

TMD这种题有什么意思啊...敲着都烦啊...感觉啥都没有用就敲完了...光考个贪心有什么意思啊. 反正不想写.NOIP遇到了...管他呢. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 1050 #define maxm 10050 using namespace std; int n,m,k,t[maxm],a[maxm],b[

[vijos1046] 观光旅游

题目链接 题意:在图中找一个最小的经过三个以上结点的环 参考:http://blog.csdn.net/olga_jing/article/details/49928443 http://blog.csdn.net/zy691357966/article/details/45673647 用floyd的思想O(n3)处理出解 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int inf=2

赤群:健全食c

这里环境优美,森林茂密,瀑布众多,没有任何污染,空气格外新鲜,空气负离子浓度超过12000个每立方厘米,给游客提供了一处呼吸负离子疗养多种疾病的好场所.这里的老人特别多,80岁以上的老人比比皆是,还有100岁老人.大熊山景区是集旅游.休闲.度假.保健.康复.教育.文化.体育等于一体的综合性生态旅游胜地,吸引众多游客前来观光旅游. 一年来,长沙市工商局全力深化商事制度改革,着力推进企业"多证合一.一照一码"和个体工商户"三证合一"改革,推行企业集群注册.简易注销.核审

新西兰旅游业杂谈【1】

好久不见啊各位! 惭愧的是,最近这一个多月,我都陷入了懈怠期,懒得专研什么技术,也不想更新excel的连载,整个人沉迷在美剧和新西兰旅游信息里,对其他视而不见. 坦白讲,这种状态是非常不对的,然而它似乎有种魔力,让我难以自拔.直到有一天,我跟自己说,其实不用看太多的技术,不用想着excel的连载.为什么不放松一下,把这段时间最吸引我的东西拿出来研究一下,对新西兰的旅游业做个行业分析? 于是,这就是这个新系列文的来源.我想从一些数字以及运营的角度,分析和展示一下新西兰的旅游业,谈谈我所看到的事情.