Cod sursa(job #1920516)

Utilizator duesakBourceanu Cristian duesak Data 10 martie 2017 03:11:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100001];
int parinte(int a){
    if(v[a]<0)return a;
    v[a]=parinte(v[a]);
    return v[a];
}
void unire(int a, int b){
    a=parinte(a);
    b=parinte(b);
    if(v[a]<v[b]){v[a]+=v[b];v[b]=a;}
    else {v[b]+=v[a];v[a]=b;}
}
int main(){
    int n,m,x,y,i,p;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        v[i]=-1;
    for(i=1;i<=m;i++){
        fin>>p>>x>>y;
        if(p==2)if(parinte(x)==parinte(y))fout<<"DA"<<'\n';
                else fout<<"NU"<<'\n';
        if(p==1) unire(x,y);
    }
    fin.close();
    fout.close();
    return 0;
}