Cod sursa(job #1345238)

Utilizator rogoz.bogdanRogoz Bogdan rogoz.bogdan Data 17 februarie 2015 14:00:23
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define MX 100001
using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int t[MX];

int Find(int x)
{
    int r=x,y;

    while(t[r])
    {
        r = t[r];
    }

    while(t[x])
    {
        y = t[x];
        t[x] = r;
        x = y;
    }

    return r;
}

void Union(int x, int y)
{
    t[Find(x)] = Find(y);
}

int main()
{
    int i,x,y,z;
    fin>>n>>m;

    for(i=1; i<=m; i++)
    {
        fin>>z>>x>>y;
        if(z == 1)
        {
            Union(x, y);
        }
        else
        {
            if(Find(x) == Find(y))
            {
                fout<<"DA\n";
            }
            else
            {
                fout<<"NU\n";
            }
        }
    }

    fin.close(); fout.close();
    return 0;
}