Cod sursa(job #2424966)

Utilizator rebeca.d31Diaconu Rebeca-Mihaela rebeca.d31 Data 24 mai 2019 00:07:04
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
int tata[500001];
int grad[500001];
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int find_tata(int nod)
{
    if(tata[nod]==nod)
        return nod;
    tata[nod]=find_tata(tata[nod]);
    return tata[nod];
}

int main()
{
    int N,M,x,y,cod;
    fin>>N>>M;
    int i;
    for(i=1;i<=N;i++)
    {
        tata[i]=i;
        grad[i]=1;
    }
    for(i=0;i<M;i++)
    {
        fin>>cod>>x>>y;
        int tata_x,tata_y;
        tata_x=find_tata(x);
        tata_y=find_tata(y);

        if(cod==1)
        {
            if(tata_x<tata_y)
            {
                tata[tata_x]=tata_y;
                grad[tata_y]+=grad[tata_x];
            }
            else
            {
                tata[tata_y]=tata_x;
                grad[tata_x]+=grad[tata_y];
            }
        }
        else
        {
            if(tata_x==tata_y)
                fout<<"DA\n";
            else fout<<"NU\n";
        }
    }
    return 0;
}