Cod sursa(job #1437162)

Utilizator maricasorinSorin-Gabriel maricasorin Data 17 mai 2015 00:59:07
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <iostream>
#include <fstream>

using namespace std;

int findset(int *t,int x)
{
    int i=x;
    while (t[x]!=0) x=t[x];
    if (i!=x) t[i]=x;
    return x;
}

void uniune(int *t,int x,int y)
{
    if (findset(t,x)!=findset(t,y)) t[x]=y;
}

int main()
{
    ifstream f("disjoint.in");
    int a,b,c,*t,n,m;
    f>>n>>m;
    t=new int [n+1];
    for (int i=1;i<=n;i++) t[i]=0;
    ofstream g("disjoint.out");
    for (int i=0;i<m;i++)
    {
        f>>a>>b>>c;
        if (a==1) uniune(t,b,c);
            else if (findset(t,b)==findset(t,c)) g<<"DA\n";
                    else g<<"NU\n";
    }
    return 0;
}