Cod sursa(job #2544892)

Utilizator dinugaftonGafton Dinu dinugafton Data 12 februarie 2020 17:22:44
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include<bits/stdc++.h>
using namespace std;
int n,x,y,a[100005],c,m;vector <int> v;
int find(int nod){
   int ans=nod;
   while(nod!=a[ans])nod=a[ans];
   while(nod!=a[nod]){
   	int aux=a[nod];
   	a[nod]=ans;
   	nod=aux;
   }
   return ans;
}
void unirea_mare(int x,int y){
	a[find(x)]=a[find(y)];
}
int main(){
	ifstream cin("disjoint.in");
	ofstream cout("disjoint.out");
	cin>>n>>m;
	for(int i=1;i<=n;i++)a[i]=i;
	for(int i=1;i<=m;i++){
		cin>>c>>x>>y;
		switch(c){
			case 1:unirea_mare(x,y);break;
			case 2:if(find(x)==find(y))cout<<"DA"<<endl;else cout<<"NU"<<endl;break;
		}
	}
	return 0;
}