Cod sursa(job #281449)

Utilizator ViksenVictor-Nicolae Savu Viksen Data 14 martie 2009 21:59:08
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<vector>
using namespace std;

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

    int n,m;

    fin>>n>>m;
    vector<int> T(n,0);
    vector<int> H(n,1);
    for(int i=0; i<n; i++)
        T[i]=i;

    int t,x,y;

    while(m--) {
        fin>>t>>x>>y;
        for(x--;T[x]!=x; x=T[x]);
        for(y--;T[y]!=y; y=T[y]);
            if(t==1) {
                if(H[x]==H[y]) H[x]++;
                if(H[x]<H[y]) {
                    T[x]=y;
                    continue;
                }
                T[y]=x;
            } else {
                if(x==y)
                    fout<<"DA\n";
                else
                    fout<<"NU\n";
            }
        }

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