Cod sursa(job #2696221)

Utilizator grigorut_octavianGrigorut Dominic Octavian grigorut_octavian Data 15 ianuarie 2021 16:12:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>

#define mac 100001

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int v[mac];
int m,n;

void make()
{
    for(int i=1;i<=n;i++)
        v[i]=i;
}

int  rad(int x)
{
   int t,s = x;
   while(s != v[s])
        s=v[s];
    while(x!=s)
    {
        t=v[x];
        v[x]=s;
        x=t;
    }
    return s;
}

void add(int x,int y)
{
    x=rad(x);
    y=rad(y);
    v[x]=y;
}

void ans_quest(int x,int y)
{
    if(rad(x)==rad(y)) fout<<"DA"<<'\n';
    else fout<<"NU"<<'\n';
}

void read()
{
    fin>>n>>m;
    make();
    int q,x,y;
    for(int i=1;i<=m;i++)
    {
        fin>>q>>x>>y;
        if(q==1) add(x,y);
        else ans_quest(x,y);
    }
}

int main()
{
    read();
    return 0;
}