Cod sursa(job #2421706)

Utilizator sorina-maria.andreiAndrei Sorina-Maria sorina-maria.andrei Data 15 mai 2019 20:24:48
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>

using namespace std;

#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;
}