• hdu1598 find the most comfortable road 枚举+最小生成树


     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define MAXN 210
     5 #define INF 2147483646
     6 using namespace std;
     7 
     8 int f[MAXN], Rank[MAXN];    //Rank长度
     9 int n, m, pos;
    10 
    11 struct Edge{
    12     int u, v, val;
    13     //按照val从小到大排列
    14     friend bool operator<(const Edge&a, const Edge&b){
    15         return a.val < b.val;
    16     }
    17 }arr[MAXN*MAXN];
    18 
    19 void init(){
    20     for (int i = 0; i<MAXN; ++i)
    21         f[i] = i, Rank[i] = 0;
    22 }
    23 
    24 int find(int x){
    25     int i, j = x;
    26     while (j != f[j]) j = f[j];
    27     while (x != j){
    28         i = f[x]; f[x] = j; x = i;
    29     }
    30     return j;
    31 }
    32 
    33 void Union(int x, int y){
    34     int a = find(x), b = find(y);
    35     if (a == b)return;
    36     if (Rank[a]>Rank[b])
    37         f[b] = a;
    38     else{
    39         if (Rank[a] == Rank[b])
    40             ++Rank[b];
    41         f[a] = b;
    42     }
    43 }
    44 
    45 int main(){
    46     int u, v, speed, Q;
    47     while (scanf("%d%d", &n, &m) != EOF){
    48         for (int i = 0; i<m; ++i)
    49             scanf("%d%d%d", &arr[i].u, &arr[i].v, &arr[i].val);
    50         sort(arr, arr + m);
    51         scanf("%d", &Q);
    52         while (Q--){
    53             scanf("%d%d", &u, &v);
    54             int ans = INF;
    55             for (int j = 0; j < m; ++j){
    56                 init();
    57                 for (int k = j; k < m; ++k){
    58                     Union(arr[k].u, arr[k].v);
    59                     if (find(u) == find(v)){
    60                         ans = min(ans, arr[k].val - arr[j].val);    //使ans尽可能的小
    61                         break;
    62                     }
    63                 }
    64             }
    65             if (ans == INF)
    66                 printf("-1
    ");
    67             else 
    68                 printf("%d
    ", ans);
    69         }
    70     }
    71     //system("pause");
    72     return 0;
    73 }
  • 相关阅读:
    Python发邮件的小脚本
    收集服务器网卡和IP信息
    Parent Proxy 和 Origin Server配置学习
    ATS 自定义日志格式
    css之选择器篇
    css之入门篇
    javascript必须懂之冒泡事件
    HTML5之语义化标签
    HTML之总结
    随堂笔记之正则与HTML5新元素
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/7465125.html
Copyright © 2020-2023  润新知