Pagini recente » Cod sursa (job #1566229) | Cod sursa (job #1853175) | Diferente pentru blog/viata-dupa-olimpiade-2 intre reviziile 12 si 11 | Cod sursa (job #529814) | Cod sursa (job #2073159)
#include <iostream>
#include <fstream>
using namespace std;
int tomb[100001]={0};
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) tomb[r1] = r2;
}
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;}
for(int i=1;i<=m;i++){
be >> muvelet >> a >> b;
if(muvelet==1) unite(a,b);
else if(querry(a,b)) ki << "Da\n";
else ki << "Nu\n";
}
cout << "Hello world!" << endl;
return 0;
}