Cod sursa(job #1134504)

Utilizator vlad.rusu11Rusu Vlad vlad.rusu11 Data 6 martie 2014 17:19:56
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
#define NMax 100001
using namespace std;

int N, M, v[NMax], x, y;
short op;
vector<int> vecini[NMax];

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

    fin >> N >> M;
    for(int i = 1 ; i <= N ; ++i)
        v[i] = i;

    for(int i = 1 ; i <= M ; ++i)
    {
        fin >> op >> x >> y;
        if(op == 1)
        {
            y = v[y];
            for(vector<int>::iterator it = vecini[y].begin() ; it != vecini[y].end() ; ++it)
            {
                v[*it] = x;
                vecini[x].push_back(*it);
            }
            v[y] = x;
            vecini[x].push_back(y);
        }
        else
        {
            if(v[x] == v[y])
                fout << "DA\n";
            else
                fout << "NU\n";
        }
    }

    fin.close();
    fout.close();
    return 0;
}