Pagini recente » Cod sursa (job #442053) | Profil Giul_Irimi | Cod sursa (job #1683555) | Cod sursa (job #2008808) | Cod sursa (job #2073178)
#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]){
tomb[i]=tomb[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;
}