Cod sursa(job #1695229)

Utilizator vancea.catalincatalin vancea.catalin Data 26 aprilie 2016 19:56:53
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<iostream>
#include<fstream>
#define DX 100010
using namespace std;
fstream fin("disjoint.in",ios::in),fout("disjoint.out",ios::out);
int p[DX],n,m,radacina;
int parcurge(int x)
{
    if(p[x]!=x)
        return p[x]=parcurge(p[x]);
    else
        return x;
}
int main()
{
    int a,b,t,i,j,unu,doi;
    fin>>n>>m;
    for(i=1;i<=n;i++) p[i]=i;
    for(i=1;i<=m;i++)
    {
        fin>>t>>a>>b;
        if(t==1)
        {
            unu=parcurge(a);
            doi=parcurge(b);
            p[unu]=doi;
        }
        else
        {
            unu=parcurge(a);
            doi=parcurge(b);
            if(unu==doi)
                fout<<"DA\n";
            else
                fout<<"NU\n";
        }
    }
}