Cod sursa(job #1884795)

Utilizator CriistinaMicula Cristina Criistina Data 19 februarie 2017 11:33:44
Problema Paduri de multimi disjuncte Scor 100
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)
{
    if(p[x]!=x)
        p[x]=stramos(p[x]);
    return p[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;
}