Cod sursa(job #3195881)

Utilizator Iustin2812Ion Iustin Ciprian Iustin2812 Data 21 ianuarie 2024 22:37:57
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> l[101];
int n,m;
int tata[101];

void init0(){
    for(int i=1;i<=n;i++)
        tata[i]=-1;
}
int find(int node){
    if(tata[node]==-1)
        return node;
    
    int root=find(tata[node]);
    tata[node]=root;
    return root;
}

int main() {
    cin>>n>>m;
    int x,y,z;
    for(int i=1;i<=m;i++){
        cin>>x>>y>>z;
        if(x==1){
            if(find(y)!=find(z)){
                if(find(y)<find(z))
                    swap(y,z);
                tata[z]+=tata[y];
                tata[y]=z;
            }
                
        }
        else{
            if(find(y)==find(z))
                cout<<"DA";
            else
                cout<<"NU";
            cout<<endl;
        }
    }
    return 0;
}