#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. oracle 11G direct path read 非常美也非常伤人

    direct path read 在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这种全表扫描就是物理读了. 在10g中,都是通过gc buffer来读 ...

  2. Python 包的制作(__init__.py)

    如何制作一个自己的包:首先,需要创建一个文件夹,将其作为顶层包,在此文件夹内我们可以定义各个不同的子文件夹与 .py 文件作为各个子包与模块注意:在每个包文件夹下都需要有一个 __init__.py ...

  3. Python——list切片

    前文简单介绍了Python中的list和它常用的一些函数,知道list是一个有序的数据集合,那么我们如何获取list中的元素呢? Index: 与C语言中数组一样,list可以通过每个元素的index ...

  4. Django-权限信息中间件操作

    # 在当前app下新建一个middleware的文件夹,然后就可以尽情的写中间件了,只能是这个名字,切记~@!import re from django.shortcuts import redire ...

  5. Android研究之游戏开发摄像头更新

     游戏中摄像头的原理介绍        在游戏开发中更新摄像头的位置能够决定屏幕显示的内容,尤其是RPG类游戏摄像头有着很关键的数据.我举一个样例 有时候我们在玩RPG游戏的时候进入一个新的场景 ...

  6. java中方法中声明三个点“...”作用

    public class Test {  public static void main(String[] args) {   String str[] = {"s"," ...

  7. HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. 解决ubuntu10.04不能上网

    1:命令行输入:lspci查看驱动,最后几行如果有ethernet controller:atheros communications ar8151 v1.0*的话,就说明驱动没有安装好, 2:下载地 ...

  9. SpringBoot配置文件详解

    自定义属性与加载 com.dongk.selfproperty.title=wangdkcom.dongk.selfproperty.name=10000 然后通过@Value("${属性名 ...

  10. 【selenium】常见问题

    1鼠标变粗:setting→1.打开设置 点击 plugins 输入ideavim  把 这个勾去掉!这个是插件的配置问题.  2.editor->appearance  去掉 use bloc ...