Cod sursa(job #1483182)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 8 septembrie 2015 21:26:12
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int t[100005],c[100005];

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

int Find(int x)
{
    while(t[x]!=0)
    {
        x = t[x];
    }
    return x;
}


int main()
{
    int i,x,y,op,r1,r2;
    fin>>n>>m;
    for(i=1;i<=n;i++) c[i] = 1;
    for(i=1;i<=m;i++)
    {
        fin>>op>>x>>y;
        if(op==1)
        {
            r1 = Find(x);
            r2 = Find(y);
            if(r1!=r2) Union(r1,r2);
        }
        else
        {
            r1 = Find(x);
            r2 = Find(y);
            if(r1==r2) fout<<"DA\n";
            else fout<<"NU\n";
        }
    }




    fout.close();
    return 0;
}