Cod sursa(job #1403341)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 27 martie 2015 11:04:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>

using namespace std;
const int N=100001;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[N],ina[N];
int find(int x)
{
    int pas=x,aux;
    while(tata[x]!=x) x=tata[x];
    while(pas!=x)
    {
        aux=tata[pas];
        tata[pas]=x;
        pas=aux;
    }
    return x;
}
int main()
{
    int n,m,i,ok,x,y;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        tata[i]=i;
    }
    for(i=1;i<=m;i++)
    {
        fin>>ok>>x>>y;
        if(ok==1) tata[find(x)]=find(y);
        else if(find(x)==find(y)) fout<<"DA\n";
        else fout<<"NU\n";
    }
}