Cod sursa(job #1074736)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 7 ianuarie 2014 21:54:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

int n,m,x,y,i,t;
int T[100005];

int rad(int nod) {
    while(T[nod]>0)
        nod=T[nod];
   return nod;
}

int main() {
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    f>>n>>m;
    for(i=1;i<=n;i++)
        T[i]=-1;
    for(i=1;i<=m;i++){
        f>>t>>x>>y;
        x=rad(x);
        y=rad(y);
        if(t==1){
            if(x==y)
                continue;
            if(T[x]<T[y]) {
                T[x]+=T[y];
                T[y]=x;
            }
            else {
                T[y]+=T[x];
                T[x]=y;
            }
        }
        else{
            if(x==y)
                g<<"DA\n";
            else
                g<<"NU\n";
        }
    }
    return 0;
}