Pagini recente » Cod sursa (job #2889002) | Cod sursa (job #2913137) | Cod sursa (job #548426) | Cod sursa (job #1127059) | Cod sursa (job #2298385)
#include <iostream>
#include <fstream>
#define EMAX 100005
using namespace std;
ifstream si("disjoint.in");
ofstream so("disjoint.out");
int rad[EMAX];
int tata(int x) {
while(rad[x]!=rad[rad[x]])
rad[x]=rad[rad[x]];
return rad[x];
}
bool query(int a,int b) {
int t1,t2;
t1=tata(a);
t2=tata(b);
return (t1==t2);
}
void uneste(int a,int b) {
int t1=tata(a),t2=tata(b);
if((a+b)&1)
rad[t2]=rad[t1];
else
rad[t1]=rad[t2];
}
int main() {
int n,m;
si>>n>>m;
int a,b,c;
for(int i=1;i<=n;++i) {
rad[i]=i;
}
for(int i=0;i<m;++i) {
si>>a>>b>>c;
if(a==1)
uneste(b,c);
else
{
if(query(b,c))
so<<"DA"<<'\n';
else
so<<"NU"<<'\n';
}
}
return 0;
}