Cod sursa(job #1162287)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 31 martie 2014 19:05:50
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[100005], tip, x, y;

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

void unite(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) unite(x, y);
            else
            {
                if (grupa(x)!=grupa(y)) g<<"NU\n";
                    else g<<"DA\n";
            }
    }
    return 0;
}