Pagini recente » Cod sursa (job #2096505) | Cod sursa (job #1010734) | Cod sursa (job #2891113) | Cod sursa (job #2659340) | Cod sursa (job #1705255)
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int L[NMAX],RG[NMAX],n,m;
int grupa(int x){
int R,y;
for(R=x;L[R]!=R;R=L[R]);
while(L[x]!=x){
y=L[x];
L[x]=R;
x=y;
}
return R;
}
void reuniune(int x,int y){
if(RG[x]>RG[y])
L[y]=L[x];
else
L[x]=L[y];
if(RG[x]==RG[y])
++RG[y];
}
int main(){
f>>n>>m;
int x,y,z,i;
for(i=1;i<=n;++i)
L[i]=i,RG[i]=1;
for(i=1;i<=m;++i){
f>>x>>y>>z;
if(x==1){
reuniune(y,z);
}
else
if(grupa(y)==grupa(z))
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}