Cod sursa(job #1884794)

Utilizator CriistinaMicula Cristina Criistina Data 19 februarie 2017 11:30:09
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#define Nmax 100001

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

int n, m, p[Nmax];
int stramos(int x)
{
    while(p[x]!=x)
    {
        x=p[x];
    }
    return x;
}
void reuniune(int x, int y)
{
    p[stramos(x)]=stramos(y);
}
bool verif(int x, int y)
{
    return stramos(x)==stramos(y);
}
int main()
{
    f>>n>>m;
    for(int i=1; i<=n;i++)
    {
        p[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        f>>x>>y>>z;
        if(x==1)
        {
            reuniune(y, z);
        }
        else
        {
            if(verif(y, z))
                g<<"DA\n";
            else g<<"NU\n";
        }
    }
    return 0;
}