Cod sursa(job #2701003)

Utilizator dariateodaria teodorescu dariateo Data 29 ianuarie 2021 15:43:53
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,cod,x,y,sef[100001];

int sefsuprem(int x)
{
    if(x==sef[x]) return x;
    return sef[x]=sefsuprem(sef[x]);
}

void reunire(int x, int y)
{
    int sefx, sefy;
    sefx=sefsuprem(x);
    sefy=sefsuprem(y);
    sef[sefx]=sefy;
}

int main()
{
    in>>n>>m;
    for(int i=1;i<=n;i++)
    {
        sef[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
        in>>cod>>x>>y;

        if(cod==1)
        {
            reunire(x,y);
        }
        else
        {
            if(sefsuprem(x)==sefsuprem(y))
                out<<"DA"<<"\n";
            else
                out<<"NU"<<"\n";
        }
    }
    return 0;
}