Cod sursa(job #2115803)

Utilizator valentinoltyanOltyan Valentin valentinoltyan Data 27 ianuarie 2018 10:16:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int tata[100005];
int n,m;
int cauta(int x)
{
    if(tata[x]==x)
    {
        return x;
    }
    int p= cauta(tata[x]);
    tata[x]=p;
    return p;
}
int main()
{
    f>>n>>m;
    for(int i=0;i<n;i++)
        tata[i]=i;
    for(int i=0;i<m;i++)
    {
        int o,x,y;
        f>>o>>x>>y;
        if(o==1)
        {
            x=cauta(x);
            y=cauta(y);
            tata[y]=x;
        }
        else
        {
            x=cauta(x);
            y=cauta(y);
            if(x==y)g<<"DA";
            else g<<"NU";
            g<<"\n";
        }
    }
    return 0;
}