Cod sursa(job #2473874)

Utilizator andrei_044Andrei Constantin andrei_044 Data 14 octombrie 2019 13:56:51
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");


int tata[100001],n,m;

int daddy(int x)
{
    int R=x;
    while(R!=tata[R])
    {
        R=tata[R];
    }
    while(x!=tata[x])
    {
        int aux=tata[x];
        tata[x]=R;
        x=aux;
    }
}

void merget(int a,int b)
{
    a=daddy(a);
    b=daddy(b);
    tata[a]=tata[b];
}


int main()
{
    int x,y,C;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        tata[i]=i;
    for(int i=1;i<=m;i++)
    {
        fin>>C>>x>>y;
        if(C==1)
        {
            merget(x,y);
        }
        else
        {
            if(daddy(x)==daddy(y))
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
        }
    }
}