Cod sursa(job #1113975)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 21 februarie 2014 09:20:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");

int N, M, GR[100002], x, y, tip;

int grupa(int x)
{
    if (GR[x]==x) return x;
    GR[x]=grupa(GR[x]);
    return GR[x];
}

void uneste(int x, int y) { GR[grupa(x)]=grupa(y); }

int main()
{
    f>>N>>M;
    for (int i=1; i<=N; ++i)
        GR[i]=i;
    for (int i=1; i<=M; ++i)
    {
        f>>tip>>x>>y;
        if (tip==1) uneste(x, y);
            else
            {
                if (grupa(x)!=grupa(y)) g<<"NU\n";
                    else g<<"DA\n";
            }
    }
    return 0;
}