Cod sursa(job #1098669)

Utilizator StexanIarca Stefan Stexan Data 4 februarie 2014 23:53:10
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
//
//  main.cpp
//  Paduri de multimi disjuncte
//
//  Created by Stefan Iarca on 2/4/14.
//  Copyright (c) 2014 Stefan Iarca. All rights reserved.
//

#include <fstream>
using namespace std;

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

#define NMAX 100010

int N,M,TT[NMAX];

void Init(){
    for (int i = 1; i <= N; i++) {
        TT[i] = i;
    }
}

void Read(){
    f>>N>>M;
}


int Search(int x){
    if (TT[x] == 0)
        return x;
    
    TT[x] = Search(TT[x]);
    return TT[x];
}

bool Merge(int x, int y){
    x = Search(x);y = Search(y);
    if (x == y)
        return false;
    
    TT[y] = x;
    return true;
}

int main()
{
    Read(); int x,y,cod;
    for (int i = 1; i <= M; i++) {
        f>>cod>>x>>y;
        if(cod == 1){
            Merge(x, y);
        }else{
            if (Search(x) == Search(y)) {
                g<<"DA"<<"\n";
            }else{
                g<<"NU"<<"\n";
            }
        }
    }
    return 0;
}