Cod sursa(job #861269)

Utilizator TheShadowsAlexandru Cristian TheShadows Data 21 ianuarie 2013 11:29:10
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
const int LIM = 100005;
int p[LIM];
int findParent(int x){
    if(p[x]==x)
        return x;
    else{
        p[x]=findParent(p[x]);
        return p[x];
    }
}
int main(){
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    int n,m;
    in>>n>>m;
    for(int i=1; i<=n; i++)
        p[i]=i;
    int type, x, y;
    for(int i=1; i<=m; i++){
        in>>type>>x>>y;
        if(type==1){
            p[y]=findParent(y);
            p[p[y]]=findParent(x);
        }
        else{
            p[y]=findParent(y);
            p[x]=findParent(x);
            if(p[x]==p[y])
                out<<"DA\n";
            else out<<"NU\n";
        }
    }
    return 0;
}