Cod sursa(job #2672676)

Utilizator maraboneaMara Bonea marabonea Data 14 noiembrie 2020 13:07:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
/**
infoarena.ro/problema/disjoint
Paduri de multimi disjuncte
*/
#include <fstream>
#define nmax 100005
using namespace std;
int vt[nmax];
int n,m;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int radacina(int x)
{
    if(vt[x]!=x)
        vt[x]=radacina(vt[x]);
    return vt[x];
}

void unire(int x, int y)
{
    if(x!=y)
        if(x<y)
            vt[y]=x;
        else
            vt[x]=y;
}

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

    for(int i=1;i<=n;i++)
        vt[i]=i;
    for(int i=1;i<=m;i++)
    {
        fin>>t>>x>>y;
        int a=radacina(x);
        int b=radacina(y);

        if(t==1)
            unire(a, b);
        else
            if(a == b)
                fout << "DA" << '\n';
            else
                fout << "NU" << '\n';

    }
}