Cod sursa(job #2615991)

Utilizator TzigCurta Tudor Tzig Data 16 mai 2020 13:46:12
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

const int NMAX = 100005;

vector <int> X[NMAX];
int CC[NMAX];

int N,M;

void adaugaMuchie(int a,int b)
{
    int fost=CC[b],lungime=X[CC[b]].size();
    for(unsigned int i=0;i<lungime;i++){
        int nodCurent=X[fost][i];
        X[CC[a]].push_back(nodCurent);
        CC[nodCurent]=CC[a];
    }
}

string aceasiComponenta(int a,int b)
{
    if(CC[a]==CC[b]){
        return "DA";
    }else{
        return "NU";
    }
}

int main()
{
    f>>N>>M;
    for(int i=1;i<=N;i++){
        CC[i]=i;
        X[i].push_back(i);
    }
    while(M){
        int op;
        f>>op;
        if(op==1){
            int a,b;
            f>>a>>b;
            adaugaMuchie(a,b);
        }else{
            int a,b;
            f>>a>>b;
            g<<aceasiComponenta(a,b)<<'\n';
        }
        M--;
    }
    f.close();
    g.close();
    return 0;
}