Cod sursa(job #1373827)

Utilizator httpsLup Vasile https Data 4 martie 2015 20:47:00
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <vector>

using namespace std;

typedef vector<int> VI;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

VI fat,depth;
int n,m,i,tip,x,y;

int det_fat(int x)
    {
    if(x!=fat[x]) fat[x]=det_fat(fat[x]);
    return fat[x];
    }

void join(int x,int y)
    {
    int px,py;
    px=det_fat(x);
    py=det_fat(y);
    fat[py]=px;
    }

int main()
    {
    f>>n>>m;
    fat.resize(n+1);
    depth.resize(n+1,0);
    for(i=1; i<=n; ++i) fat[i]=i;
    for(; m; --m)
        {
        f>>tip>>x>>y;
        if(tip==1) join(x,y);
        else if(det_fat(x)==det_fat(y)) g<<"DA\n";
        else g<<"NU\n";
        }
    return 0;
    }