Cod sursa(job #1168250)

Utilizator giminis96Pavel Stefan Cristian giminis96 Data 7 aprilie 2014 18:08:42
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

int n,m;
int *v;

inline void adauga(int x,int y)
{
    int c;
    int d;
    if(x < y)
    {
        c = v[y];
        d = v[x];
        v[y] = v[v[x]];
    }
    else
    {
        c = v[x];
        d = v[y];
        v[x] = v[v[y]];
    }
    int i;
    for(i = 1; i <= n; i++)
    {
        if(v[i] == c)
            v[i] = d;
    }
}

bool gaseste(int x,int y)
{
    return (v[x] == v[y]);

}

inline void citeste()
{
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    in>>n>>m;
    v = new int[n+1];
    int i;
    for(i = 1; i <= n; i++)
        v[i] = i;
    int a,b,c;
    for(i = 0; i < m; i++)
    {
        in>>a>>b>>c;
        if(a == 1)
        {
            adauga(b,c);
        }
        else
        {
            if(gaseste(b,c))
                out<<"DA"<<'\n';
            else
                out<<"NU"<<'\n';
        }
    }
    in.close();
    out.close();
}

int main()
{
    citeste();
    return 0;
}