Cod sursa(job #1631191)

Utilizator StrokeSimion Valentin Stroke Data 5 martie 2016 13:39:46
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
int x,y,z,i,j,m,n,c,v[100001],a[100001][39];


void DFS(int nod)
{
    int j;
    if(v[nod]!=z)
    {
        v[nod]=z;
        for(j=1;j<=a[nod][a[nod][0]];++j)
            DFS(a[nod][j]);
    }
}

int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        v[i]=i;

    for(i=1;i<=m;++i)
    {
        f>>c>>x>>y;
        if(c==1)
        {
            ++a[x][0];
            ++a[y][0];
            a[x][a[x][0]]=y;
            a[y][a[y][0]]=x;
            z=v[x];
            if(v[y]!=z)
                DFS(y);
            DFS(x);
        }
        else
        {
            if(v[x]==v[y])
                g<<"DA"<<'\n';
            else
                g<<"NU"<<'\n';
        }
    }
    return 0;

}