Pagini recente » Cod sursa (job #2166354) | Cod sursa (job #512388) | Cod sursa (job #635160) | Cod sursa (job #679595) | Cod sursa (job #2957440)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int NMAX=100000;
int T[NMAX+1],C[NMAX+1];
int radacina(int x)
{
if(x==T[x])
return x;
else
{
T[x]=radacina(T[x]);
return T[x];
}
}
void leaga(int a , int b)
{
if(C[b]>C[a])
{
T[a]=T[b];
C[b]=C[a]+C[b];
}
else
{
T[b]=T[a];
C[a]=C[b]+C[a];
}
}
int main()
{
int N,M,op,x,y,cx,cy;
f>>N>>M;
for(int i=1; i<=N; i++)
T[i]=i,C[i]=1;
while(M--)
{
f>>op>>x>>y;
///cout<<op<<' '<<x<<' '<<y<<'\n';
int r1=radacina(x);
int r2=radacina(y);
///cout<<r1<<' '<<r2<<'\n';
if(op==1&&r1!=r2)
leaga(r1,r2);
else if(op==2)
{
if(r1==r2)
g<<"DA\n";
else g<<"NU\n";
}
///cout<<op<<' '<<x<<' '<<y<<'\n';
}
return 0;
}