Cod sursa(job #1795202)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 2 noiembrie 2016 08:35:58
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define VAL 100005

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int N, M, i;
int t, x, y;
int dx, dy;
int fat[VAL];

int GetFat(int a)
{
    if (fat[a]!=a)
      fat[a]=GetFat(fat[a]);
    return fat[a];
}

int main()
{
    fin >> N >> M;
    for (i=1; i<=N; i++)
      fat[i]=i;
    for (i=1; i<=M; i++)
    {
        fin >> t >> x >> y;
        dx=GetFat(x);
        dy=GetFat(y);
        if (t==1)
          fat[x]=dy;
        else
        {
            if (dx==dy)
              fout << "DA\n";
            else
              fout << "NU\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}