Cod sursa(job #1439074)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 21 mai 2015 12:56:46
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 N,M,tip,x,y,i,v[100005];

int verif(int nod)
{
    if(nod!=v[nod])
    {
        v[nod]=verif(v[nod]);
        return v[nod];
    }
    return nod;
}

void reun(int x, int y)
{
    x=verif(x);
    y=verif(y);
    v[x]=y;
}

int main()
{
    f>>N>>M;

    for(i=1;i<=N;i++)
        v[i]=i;

    for(i=0;i<M;i++)
    {
        f>>tip>>x>>y;
        if(tip==1)
            reun(x,y);
        else
        {
            if(verif(x)==verif(y))
                g<<"DA\n";
            else
                g<<"NU\n";
        }
    }

    f.close();
    g.close();
    return 0;
}