zoukankan      html  css  js  c++  java
  • hdu 1811 二分+并查集

     1 #include "stdio.h"  //二分+并查集,,想想道理何在!
     2 #include "stdlib.h"
     3 #include "algorithm"
     4 using namespace std;
     5 #define INF 0x3fffffff
     6 struct node{
     7     int x,y,dis;
     8 }a[1005];
     9 
    10 int set[1005];
    11 
    12 int find(int x){
    13     if(set[x]!=x)
    14         set[x] = find(set[x]);
    15     return set[x];        
    16 }
    17 
    18 int cmp(node u,node v)
    19 {
    20     return u.dis < v.dis;    
    21 }
    22 
    23 void Union(int x,int y)
    24 {        
    25     set[find(x)] = find(y);        
    26 } 
    27 
    28 void init(int n) 
    29 {
    30     int i;
    31     for(i=1;i<=n;i++)
    32         set[i] = i;    
    33 }
    34 
    35 int main()
    36 {
    37     int i,j;
    38     int n,m,q;
    39     while(scanf("%d%d",&n,&m)!=-1)
    40     {
    41         int x,y,k;
    42         for(i=0;i<m;i++)
    43         {
    44             scanf("%d%d%d",&x,&y,&k);
    45             a[i].x = x;
    46             a[i].y = y;
    47             a[i].dis = k;
    48         }
    49         sort(a,a+m,cmp);
    50         scanf("%d",&q);
    51         int min;
    52         while(q--)
    53         {
    54             scanf("%d%d",&x,&y);
    55             min = INF;
    56             for(i=0;i<m;i++)
    57             {
    58                 init(n);
    59                 for(j=i;j<m;j++)
    60                 {
    61                     Union(a[j].x,a[j].y);
    62                     if(find(x) == find(y))
    63                         break;
    64                 }
    65                 if(j==m) break;
    66                 if(min>a[j].dis-a[i].dis)
    67                     min = a[j].dis - a[i].dis;
    68             }
    69             if(min == INF)
    70                 printf("-1
    ");
    71             else
    72                 printf("%d
    ",min);
    73         }
    74     }
    75     return 0;
    76 }



  • 相关阅读:
    33. 搜索旋转排序数组
    54. 螺旋矩阵
    46. 全排列
    120. 三角形最小路径和
    338. 比特位计数
    746. 使用最小花费爬楼梯
    spring boot的一些常用注解
    SSM整合Dubbo案例
    一些面试题
    Spring Aop和Spring Ioc(二)
  • 原文地址:https://www.cnblogs.com/ruo-yu/p/4412010.html
Copyright © 2011-2022 走看看