Cod sursa(job #2390606)

Utilizator cosmin0309Epure Cosmin cosmin0309 Data 28 martie 2019 11:02:28
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
int v1[1000], v2[1000];
void operatia1(int x, int y)
{
    if(v2[x]>=v2[y])
    {
        v1[y]=x;
        v2[x]+=v2[y];
    }
    else
    {
        v1[x]=y;
        v2[y]+=v2[x];
    }
}
int operatia2(int x)
{
    if(v1[x]!=x)
        v1[x]=operatia2(v1[x]);
    return v1[x];
}
int main()
{
    int N, M;
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    f>>N>>M;
    int cod, x, y;
    for(int i=1; i<=N; i++)
    {
        v1[i]=i;
        v2[i]=1;
    }
    for(int i=1; i<=M; i++)
    {
        f>>cod>>x>>y;
        operatia2(x);
        operatia2(y);
        if(cod==1)
            operatia1(x, y);
        else if(v1[x]==v2[y])
            g<<"DA"<<endl;
        else
            g<<"NU"<<endl;
    }

}