Cod sursa(job #1313241)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 10 ianuarie 2015 14:15:10
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#define nmax 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m;
int t[nmax];

int rad(int x)
{
    while(t[x]>0) {
        x=t[x];
    }
    return x;
}
void leaga(int a,int b)
{
    t[a]+=t[b];
    t[b]=a;
}



int main()
{
    int i,j,x,y;
    int rx,ry,op;

    f>>n>>m;
    for (i=1;i<=m;i++) {
        f>>op>>x>>y;
        rx=rad(x);
        ry=rad(y);

        if (op==2) {
            if (rx==ry)
                g<<"DA\n";
            else
                g<<"NU\n";
        }
        else {
            if (rx==ry) continue;
            if (t[rx]<t[ry])
                leaga(rx,ry);
            else
                leaga(ry,rx);

            }
    }



    return 0;
}