Cod sursa(job #2027005)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 25 septembrie 2017 14:31:48
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>

using namespace std;
int t[100001];
int rad (int x){
    while (t[x]>0)
        x=t[x];
    return x;
}
int main()
{
    FILE *fin=fopen ("disjoint.in","r");
    FILE *fout=fopen ("disjoint.out","w");
    int n,m,i,rx,ry,op,x,y;
    fscanf (fin,"%d%d",&n,&m);
    for (i=1;i<=n;i++)
        t[i]=-1;
    for (i=1;i<=m;i++){
        fscanf (fin,"%d%d%d",&op,&x,&y);
        rx=rad(x);
        ry=rad(y);
        if (op==2){
            if (rx==ry)
                fprintf (fout,"DA\n");
            else fprintf (fout,"NU\n");
        }
        else if (rx!=ry){
            if (t[rx]<t[ry]){
                t[rx]+=t[ry];
                t[ry]=rx;
            }
            else {
                t[ry]+=t[rx];
                t[rx]=ry;
            }
        }
    }
    return 0;
}