Cod sursa(job #1041697)

Utilizator leontinLeontin leontin Data 26 noiembrie 2013 00:00:39
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<iostream>
#include<fstream>
using namespace std;
int v[100001],n,m;
int cauta (int a)
{
    while(a!=v[a])
    {
        a=v[a];
    }
    return a;

}
void uneste(int a,int b)
{
    v[cauta(a)]=cauta(b);
}

int main()
{
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    int a,b,c;
    f>>n>>m;
    for(int i=1;i<=n;i++)
    v[i]=i;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b>>c;
        if(a==1)
        {
            uneste(b,c);
        }
        else
        if(cauta(c)==cauta(b))
        g<<"DA"<<endl;
        else
        g<<"NU"<<endl;
    }
    return 0;
}