Cod sursa(job #1504078)

Utilizator Vele_GeorgeVele George Vele_George Data 17 octombrie 2015 12:05:02
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <iostream>
#include <fstream>
#define nmax 100003
using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");
int T[nmax], n, m;
int find(int x)
{
    while(T[x]!=x)
        x=T[x];
    return x;
}
int join(int x, int y)
{
    x=find(x);
    y=find(y);
    T[x] = y;
}
int main()
{
    int act, x, y;
    f >> n >> m;
    for(int i=1; i<=n; i++)
    {
        T[i]=i;
    }
    for(int i=1; i<=m; i++)
    {
        f >> act >> x >> y;
        if (act == 1) join(x,y);
                else g << (find(x) == find(y) ? "DA\n" : "NU\n");

    }
    f.close();
    g.close();

     return 0;
}