Cod sursa(job #916922)

Utilizator alexandru93moraru alexandru sebastian alexandru93 Data 17 martie 2013 00:15:56
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<vector>
#include <stddef.h>
#define maxn 100001
using namespace std;

int N,M;

vector<int> V;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

void connectM(int x,int y){
    while(V[x]) //tata
        x=V[x];
    while(V[y]) //fiu
        y=V[y];
    V[y]=x;
}

void afis(int x){
    if(x)g<<"DA\n";
    else g<<"NU\n";
}

void test(int x,int y){
    while(V[x])
        x=V[x];
    while(V[y])
        y=V[y];
    if(x==y)
        afis(1);
    else
        afis(0);
}

int main(){
    int c,x,y;
    f>>N>>M;
    V.resize(N+1);
    for(int i=0;i<M;i++){
        f>>c>>x>>y;
        if(c==1)
            connectM(x,y);
        else
            test(x,y);
    }
    return 0;
}