Cod sursa(job #724200)

Utilizator algotrollNume Fals algotroll Data 26 martie 2012 12:24:08
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#include<vector>
#include<algorithm>
#define _NM 100010
using namespace std;

int main()
{
    ifstream fin("disjoint.in");
    ofstream fout("disjoint.out");
    static vector<int> M[_NM];
    static int e[_NM];
    int nM, nOp;
    fin>>nM>>nOp;
    for (int i=1;i<=nM;i++)
    {
        M[i].push_back(i);
        e[i]=i;
    }
    for (int i=1;i<=nOp;i++)
    {
        int op,x,y;
        fin>>op>>x>>y;
        if (op==1)
        {
            if (e[x]>e[y]) swap(x,y);
            int e_x=e[x], e_y=e[y];
            for (vector<int>::iterator it=M[e_y].begin();it!=M[e_y].end();++it)
            {
                M[e_x].push_back(*it);
                e[*it]=e[x];
            }
        }
        else
            fout<<(e[x]==e[y]?"DA\n":"NU\n");
    }
    return 0;
}