Pagini recente » Cod sursa (job #1107230) | Cod sursa (job #2568346) | Cod sursa (job #2946470) | Cod sursa (job #3268170) | Cod sursa (job #1183611)
//Paduri De Multimi Disjuncte
#include <fstream>
using namespace std;
int n, m;
int T[100001], H[100001];
ifstream inFile("disjoint.in");
ofstream outFile("disjoint.out");
int GetRoot(int x)
{
while(T[x]){ x=T[x]; }
return x;
}
int main()
{
inFile >> n >> m;
int q, x, y, rx, ry;
for(int i=1; i<=m; i++){
inFile >> q >> x >> y;
rx=GetRoot(x);
ry=GetRoot(y);
if(q==1 && rx!=ry){
if( H[rx]>H[ry] ){ T[ry]=rx; }
if( H[rx]<H[ry] ){ T[rx]=ry; }
if( H[rx]==H[ry] ){ T[ry]=rx; H[rx]++; }
}
if(q==2){
if(rx==ry) outFile << "DA\n";
else outFile << "NU\n";
}
}
}