• hdu1598(并查集)


    将边从小到大排序,然后从最小的开始枚举,判断连通,得到当前的速度最小差,比较得出最小值。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 struct po
     6 {
     7     int u,v,w;
     8 } s[1005];
     9 int p[1005];
    10 int cmp(po a,po b)
    11 {
    12     return a.w<b.w;
    13 }
    14 int findSet(int x)
    15 {
    16     if (p[x] == x)
    17         return x;
    18     return findSet(p[x]);
    19 }
    20 int main()
    21 {
    22     int n,m;
    23     while(scanf("%d%d",&n,&m)!=EOF)
    24     {
    25         for(int i=0;i<m;i++)
    26         scanf("%d%d%d",&s[i].u,&s[i].v,&s[i].w);
    27         sort(s,s+m,cmp);
    28         for(int i=0;i<=n;i++) p[i]=i;
    29         int t;
    30         scanf("%d",&t);
    31             int st[20],en[20],num[20],cha[20];
    32             for(int i=0;i<t;i++)
    33                 scanf("%d%d",&st[i],&en[i]);
    34             memset(num,0,sizeof(num));
    35             for(int i=0;i<t;i++)
    36             cha[i]=2000000;
    37             for(int k=0;k<m;k++)
    38             {
    39                 for(int i=0;i<=n;i++) p[i]=i;
    40                 for(int i=k;i<m;i++)
    41                 {
    42                     int fx = findSet(s[i].u);
    43                     int fy = findSet(s[i].v);
    44                     if (fx != fy)
    45                     p[fx] = fy;
    46                     for(int j=0;j<t;j++)
    47                     if(findSet(st[j])==findSet(en[j])&&num[j]==0)
    48                     {
    49                         if(s[i].w-s[k].w<cha[j])
    50                         cha[j]=s[i].w-s[k].w;
    51                     }
    52                 }
    53             }
    54 
    55             for(int i=0;i<t;i++)
    56             if(cha[i]!=2000000)
    57             printf("%d
    ",cha[i]);
    58             else printf("-1
    ");
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    SpringMVC基础知识
    git pull 和git fetch的区别
    动态规划的原理?
    为什么要使用volatile修饰呢?
    内部类,匿名内部类?
    什么是性能优化?
    如何定位CPU瓶颈?
    什么是程序的耦合?
    什么是性能优化?
    Class类的常用方法?
  • 原文地址:https://www.cnblogs.com/Acgsws/p/3216780.html
Copyright © 2020-2023  润新知