Cod sursa(job #1417492)

Utilizator gbibBacotiu Gabi gbib Data 10 aprilie 2015 14:29:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int f[100005];
int getf(int i)
{
    if(f[i]==i)
        return f[i];
    f[i]=getf(f[i]);
    return f[i];
}
void q(int i, int j)
{
    if(getf(i)==getf(j))
        out<<"DA"<<'\n';
    else
        out<<"NU"<<'\n';
}
void unite(int i, int j)
{
    i=getf(i);
    j=getf(j);
    if(rand()%2)
    {
        f[i]=j;
    }
    else
    {
        f[j]=i;
    }
}
int main()
{int i,j,n,m,tip;
in>>n>>m;
for(i=1;i<=n;i++)
    f[i]=i;
while(m--)
{
    in>>tip;
    in>>i>>j;
    if(tip==1)
    {
        unite(i,j);
    }
    else
    {
        q(i,j);
    }
f[i]=getf(i);
f[j]=getf(j);
}
    return 0;
}