Cod sursa(job #2003529)

Utilizator cipri321Marin Ciprian cipri321 Data 23 iulie 2017 10:19:28
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define DIM 100001
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int n,m;
int P[DIM];
int radacina(int a)
{
    if(P[a]==0)
        return a;
    P[a]=radacina(P[a]);
    return P[a];
}
void reuniune(int a,int b)
{
    P[radacina(b)]=radacina(a);
}
bool query(int a,int b)
{
    return (radacina(a)==radacina(b));
}
int main()
{
    fi>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int t,a,b;
        fi>>t>>a>>b;
        if(t==1)
            reuniune(a,b);
        else
        {
            bool ok=query(a,b);
            if(ok)
                fo<<"DA\n";
            else
                fo<<"NU\n";
        }
        /*
        for(int i=1;i<=n;i++)
            fo<<P[i]<<" ";
        fo<<"\n";
        */
    }
    fi.close();
    fo.close();
    return 0;
}