Cod sursa(job #1388659)

Utilizator BogdanisarBurcea Bogdan Madalin Bogdanisar Data 15 martie 2015 17:10:08
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int N,M,i,j,tip,x,y,temp;
int v[100005];

int grupa(int);

void initializare();

int main()
{
    f>>N>>M;
    initializare();
    for (int cont1=0;cont1<M;++cont1)
    {
        f>>tip>>x>>y;
        switch (tip)
        {
            case 1:
            {
                v[grupa(x)]=v[grupa(y)];
                break;
            }
            case 2:
            {
                if (v[grupa(x)]==v[grupa(y)])
                    g<<"DA"<<'\n';
                else
                    g<<"NU"<<'\n';
            }
        }
    }
    f.close();g.close();
    return 0;
}

void initializare()
{
    for (i=1;i<=N;++i)
        v[i]=i;
}

int grupa(int da)
{
    if (v[da]==da) return da;
    v[da]=grupa(v[da]);
    return v[da];
}