Hdu 1598 find the most comfortable road 并查集&枚举
2014-07-13 15:14
148 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598
题目大意:求从一点到另外一点的最舒适路径,这个路径要求最大权值与最小权值的差最小。
解题思路:先把路径的长度从小到大排序,然后依次枚举每条边为初始边,依次向里面加边(加边之前先判断这条边的两点是否联通,如果联通,继续向下遍历),每次加完边判断初始点和终点是否联通,如果联通,这个路径的差值为 当前路径权值-初始路径的权值(因为之前所有边的长度都已经排好序了),循环枚举每条边,找出最舒适路径。
代码如下:
题目大意:求从一点到另外一点的最舒适路径,这个路径要求最大权值与最小权值的差最小。
解题思路:先把路径的长度从小到大排序,然后依次枚举每条边为初始边,依次向里面加边(加边之前先判断这条边的两点是否联通,如果联通,继续向下遍历),每次加完边判断初始点和终点是否联通,如果联通,这个路径的差值为 当前路径权值-初始路径的权值(因为之前所有边的长度都已经排好序了),循环枚举每条边,找出最舒适路径。
代码如下:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 205 int f ,visit ; int Min; struct point{ int x,y,dis; }s[1005]; bool cmp(point a,point b) { return a.dis<b.dis; } void init() { Min=1000000000; for(int i=0;i<N;i++) f[i]=i; } int find(int x) { if(x!=f[x]) f[x]=find(f[x]); return f[x]; } void merge(point a) { int fx=find(a.x); int fy=find(a.y); if(fx!=fy) f[fx]=fy; } int main() { int n,m,num,a,b; while(~scanf("%d%d",&n,&m)) { for(int i=0;i<m;i++) scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].dis); sort(s,s+m,cmp); scanf("%d",&num); for(int p=0;p<num;p++) { scanf("%d%d",&a,&b); int i,j,cost=1000000000; for(i=0; i<m; i++) { init();//初始化 应在循环里面 for(j=i; j<m; j++) { merge(s[j]); if(find(a)==find(b)) { if(s[j].dis-s[i].dis<Min) Min=s[j].dis-s[i].dis; if(Min<cost) cost=Min; break; } } } if(cost==1000000000) printf("-1\n"); else printf("%d\n",cost); } } return 0; }
相关文章推荐
- poj_1135_最短路径&枚举
- 杭州网赛-E(枚举)&hdu-4414
- UVA10277 - Boastin' Red Socks(枚举+二分)
- <3> go 枚举
- 51nod1051-衍生最大子段和&枚举-最大子矩阵和
- hdoj 4932 Miaomiao's Geometry 【暴力枚举】
- POJ 3080--Blue Jeans【KMP && 暴力枚举】
- Java基础复习:枚举(java.lang.Enum<E>)
- HDU4430->二分&&枚举
- POJ2965 The Pilots Brothers' refrigerator(枚举)
- POJ 1966--Cable TV Network【最小割 && 枚举终点起点】
- 枚举->HDU 3711 Binary Number
- C#==>枚举
- Android-->检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播
- UVa 140 Bandwidth (枚举全排列&剪枝搜索)
- hdu 4771 Stealing Harry Potter's Precious (2013 杭州 onsite B题)bfs预处理后,dfs枚举或tsp
- Poj 2741Colored Cubes(贪心&枚举)
- base {System.Exception} = {"无法枚举查询结果多次。"}
- 数组&字符串&结构体&共用体&枚举
- Swift之枚举类型&结构体