Cod sursa(job #1790279)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 27 octombrie 2016 22:59:36
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#define VAL 100005

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int N, M, i, j;
int poz[VAL];
int op, a, b, x, y;
vector<int> v[VAL];
vector<int>:: iterator it;

int main()
{
    fin >> N >> M;
    for (i=1; i<=N; i++)
    {
        v[i].push_back(i);
        poz[i]=i;
    }
    for (i=1; i<=M; i++)
    {
        fin >> op >> a >> b;
        if (op==2)
        {
            if (poz[a]==poz[b])
              fout << "DA\n";
            else
              fout << "NU\n";
        }
        else
        {
            x=poz[a];
            y=poz[b];
            for (it=v[y].begin(); it!=v[y].end(); it++)
            {
                poz[*it]=x;
                v[x].push_back(*it);
            }
            v[y].clear();
        }
    }
    fin.close();
    fout.close();
    return 0;
}