Pagini recente » Rating oroles94 (oroles94) | Istoria paginii utilizator/butiricristian | Istoria paginii utilizator/denispetre | Statistici Iulia Ionascu (iulia.ionascu) | Cod sursa (job #2073168)
#include <iostream>
#include <fstream>
using namespace std;
int tomb[100001]={0};
int hossz[100001];
int root(int a){
int i=a;
while(i!=tomb[i]){
i=tomb[i];
}
return i;
}
void unite(int a, int b){
int r1, r2;
r1 = root(a);
r2 = root(b);
if(r1!=r2){
if(hossz[r1]>hossz[r2]){ tomb[r2] = r1; hossz[r1]+=hossz[r2];}
else{ tomb[r1] = r2; hossz[r2]+=hossz[r1];}
}
}
bool querry(int a, int b){
int r1, r2;
r1 = root(a);
r2 = root(b);
if(r1==r2) return true;
return false;
}
int main()
{
ifstream be("disjoint.in");
ofstream ki("disjoint.out");
int n, m, muvelet, a,b;
be >> n >> m;
for(int i =0;i<n;i++){tomb[i]=i; hossz[i]=1;}
for(int i=1;i<=m;i++){
be >> muvelet >> a >> b;
hossz[tomb[i]]++;
if(muvelet==1) unite(a,b);
else if(querry(a,b)) ki << "Da\n";
else ki << "Nu\n";
}
cout << "Hello world!" << endl;
return 0;
}