#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 210
#define INF 2147483646
using namespace std; int f[MAXN], Rank[MAXN]; //Rank长度
int n, m, pos; struct Edge{
int u, v, val;
//按照val从小到大排列
friend bool operator<(const Edge&a, const Edge&b){
return a.val < b.val;
}
}arr[MAXN*MAXN]; void init(){
for (int i = ; i<MAXN; ++i)
f[i] = i, Rank[i] = ;
} int find(int x){
int i, j = x;
while (j != f[j]) j = f[j];
while (x != j){
i = f[x]; f[x] = j; x = i;
}
return j;
} void Union(int x, int y){
int a = find(x), b = find(y);
if (a == b)return;
if (Rank[a]>Rank[b])
f[b] = a;
else{
if (Rank[a] == Rank[b])
++Rank[b];
f[a] = b;
}
} int main(){
int u, v, speed, Q;
while (scanf("%d%d", &n, &m) != EOF){
for (int i = ; i<m; ++i)
scanf("%d%d%d", &arr[i].u, &arr[i].v, &arr[i].val);
sort(arr, arr + m);
scanf("%d", &Q);
while (Q--){
scanf("%d%d", &u, &v);
int ans = INF;
for (int j = ; j < m; ++j){
init();
for (int k = j; k < m; ++k){
Union(arr[k].u, arr[k].v);
if (find(u) == find(v)){
ans = min(ans, arr[k].val - arr[j].val); //使ans尽可能的小
break;
}
}
}
if (ans == INF)
printf("-1\n");
else
printf("%d\n", ans);
}
}
//system("pause");
return ;
}

hdu1598 find the most comfortable road 枚举+最小生成树的更多相关文章

  1. hdu1598 find the most comfortable road (枚举)+【并查集】

    <题目链接> 题目大意: XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在 ...

  2. HDU1598 find the most comfortable road 【并查集】+【枚举】

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. hdu 1598 find the most comfortable road(枚举+卡鲁斯卡尔最小生成树)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  4. HDU-1598 find the most comfortable road

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  5. HDU 1598 find the most comfortable road(枚举+并查集,类似于最小生成树)

    一开始想到用BFS,写了之后,发现有点不太行.网上查了一下别人的解法. 首先将边从小到大排序,然后从最小边开始枚举,每次取比它大的边,直到start.end属于同一个集合,即可以连通时停止.过程类似于 ...

  6. HDU 1598 find the most comfortable road (最小生成树) &gt;&gt;

    Problem Description XX明星有许多城市,通过与一个陌生的城市高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流.每条SARS都对行驶 ...

  7. [HDU1598]find the most comfortable road

    思路: 考虑一个暴力:枚举最大的边权和最小的边权,然后将边权在这之间的边全拿出来构成一张无向图,剩下的就是判断是否存在一条从$S$到$T$的路径.相当于判$S$和$T$是否连通,用并查集连一下即可.时 ...

  8. hdu-1598 find the most comfortable road---kruskal+枚举下界

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 题目大意: XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Ro ...

  9. HDU - 1598 find the most comfortable road 【最小生成树】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1598 思路 用kruskal 算法 将边排序后 跑 kruskal 然后依次将最小边删除 再去跑 kr ...

随机推荐

  1. 一道有关switch-case题目

    一道有关switch-case题目 /** * * @title:SwitchCase.java * @Package:com.you.hbxs.model * @Description:<h3 ...

  2. MD5介绍及Windows下对文件做md5校验。

    MD5介绍参考百度百科: 摘要如下: MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性. 一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度 ...

  3. excel 创建数据有效性及背景颜色

    需求:用excel做数据或者表格时经常需要在一列中给出固定的几个进行悬着,这是如果每次键盘输入降低工作效率.如果做成鼠标双击进行选择,则提高很多效率,比如需要给一列填写Pass或Failure时,具体 ...

  4. Robot Framework自己主动化測试框架之我见

    一些自己主动化測试现状: 盲目的去做自己主动化,终于以失败告终. 觉得是能提高效率的事情.却推广不下去: 事实上上述问题产生的原因是: 自己主动化測试案例稳定性不高,可维护性比較差: 自己主动化測试工 ...

  5. 白帽子讲web安全读后感

    又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss.其它待用到时再专门深入学习. 吴翰清是本书作者,icon是一个刺字,圈内人称道哥.曾供职于阿里,后 ...

  6. Shell hook

    [目的]实现 ll -as   +hook+     clear Shell脚本及钩子 - CSDN博客 https://blog.csdn.net/shengzhu1/article/details ...

  7. Fibonacci数列(找规律)

    题目描述 Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, ...

  8. hdu 3336 Count the string(next数组)

    题意:统计前缀在串中出现的次数 思路:next数组,递推 #include<iostream> #include<stdio.h> #include<string.h&g ...

  9. codeforces 691B B. s-palindrome(水题)

    题目链接: B. s-palindrome 题意: 问给定的字符串是否是镜面对称; 思路: 直接看哪些字母是镜面对称的就行: AC代码: //#include <bits/stdc++.h> ...

  10. bzoj1003物流运输——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 DP好题: 直接找一个时间段的最短路,并用它来预处理出每个时间段的最小花费: f[i] ...