zoukankan      html  css  js  c++  java
  • 3367 【模板】并查集

    题目描述

    如题,现在有一个并查集,你需要完成合并和查询操作。

    输入输出格式

    输入格式:

    第一行包含两个整数N、M,表示共有N个元素和M个操作。

    接下来M行,每行包含三个整数Zi、Xi、Yi

    当Zi=1时,将Xi与Yi所在的集合合并

    当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N

    输出格式:

    如上,对于每一个Zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 int n, m;
     4 int par[10010];
     5 int getpar(int x){
     6     if(par[x]!=x) par[x] = getpar(par[x]);
     7     return par[x];
     8 }
     9 void merge(int x, int y){
    10     if(getpar(x) == getpar(y))
    11         return;
    12     par[getpar(x)] = getpar(y);
    13 }
    14 int query(int x, int y){
    15     return getpar(x)==getpar(y);
    16 }
    17 int main(){
    18     cin>>n>>m;
    19     int i;
    20     for(i = 1; i <= n; i++)
    21         par[i] = i;
    22     for(i = 1; i <= m; i++){
    23         int z, x, y;
    24         cin>>z>>x>>y;
    25         if(z == 1){
    26             merge(x, y);
    27         }
    28         else if(z == 2){
    29             if(query(x,y))
    30                  cout<<"Y"<<endl;
    31             else cout<<"N"<<endl;
    32         }
    33     }
    34     return 0;
    35 }

    备注:

    本来自己写了一遍,然后只得了20分orz

    标黄的两行注意一下。

    我要去刚Kruscal了。。

  • 相关阅读:
    网络性能测试工具iperf详解
    linux下的抓包工具tshark和 tcpdump用法
    linux下网络发包工具
    >/dev/null 2>&1 的作用
    linux screen 命令详解
    wget 命令操作实例
    Centos Linux release 7.2.15ll (core) yum 安装java环境
    日志监听
    java 身份证工具类
    java 生成微信的二维码 工具类
  • 原文地址:https://www.cnblogs.com/fangziyuan/p/6024270.html
Copyright © 2011-2022 走看看