zoukankan      html  css  js  c++  java
  • 并查集

    1. HDU 1232(并查集模板题)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string.h>
     4 using namespace std;
     5 #define MAX 1002
     6 int pre[MAX];///用来标记关系
     7 int t[MAX];///用来标记独立的快
     8 int find(int x)///查找根节点                                                                                              //查找根节点
     9 {
    10     int r=x;
    11     while(pre[r]!=r)                                                                                              //返回根节点 r
    12         r=pre[r];
    13     int i=x,j;
    14     while(i!=r)                                                                                                        //路径压缩
    15     {
    16         j=pre[i]; // 在改变上级之前用临时变量  j 记录下他的值
    17         pre[i]=r ; //把上级改为根节点
    18         i=j;
    19     }
    20     return r;
    21 }
    22 
    23 void join(int x,int y)//判断x y是否连通,
    24 //如果已经连通,就不用管了 //如果不连通,就把它们所在的连通分支合并起,
    25 {
    26     int fx=find(x),fy=find(y);
    27     if(fx!=fy)
    28         pre[fx]=fy;
    29 }
    30 int main()
    31 {
    32     int n,m,from,to,ans,i;
    33     while(scanf("%d%d",&n,&m)!=EOF&&n)
    34     {
    35         for(int i=1; i<=n; i++)//初始化
    36             pre[i]=i;
    37         for(int i=1; i<=m; i++)
    38         {
    39             scanf("%d%d",&from,&to);
    40             join(from,to);
    41         }
    42         memset(t,0,sizeof(t));
    43         for(int i=1; i<=n; i++)
    44             t[find(i)]=1;///标记根节点
    45         for(ans=0,i=1; i<=n; i++)
    46             if(t[i])
    47                 ans++;
    48         printf("%d
    ",ans-1);
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    PTA 两个有序链表序列的合并
    PTA 递增的整数序列链表的插入
    PTA 链表逆置
    PTA 带头结点的链式表操作集
    _KPCR, _NT_TIB, _KPRCB
    FSOP
    逆向PspCreateProcess
    寒假训练 [GKCTF2020]Domo(4/250) 劫持vtable
    IO_FILE利用与劫持vtables控制程序流程、FSOP
    线程结构
  • 原文地址:https://www.cnblogs.com/A--Q/p/6761325.html
Copyright © 2011-2022 走看看