Pagini recente » Cod sursa (job #2443961) | Cod sursa (job #2048586) | Cod sursa (job #1212582) | Cod sursa (job #904847) | Cod sursa (job #829659)
Cod sursa(job #829659)
#include<fstream>
#define NN 100010
using namespace std;
ofstream out("disjoint.out");
int T[NN],rang[NN],n,m;
void read();
int find(int x);
void unite(int x,int y);
int main()
{
ifstream in("disjoint.in");
in>>n>>m;
for(int i=1;i<=n;i++)
{
T[i]=i;
rang[i]=1;
}
for( int cod,x,y ; m ; --m )
{
in>>cod>>x>>y;
int m1 = find(x);
int m2 = find(y);
if ( cod == 1 )
unite(m1,m2);
else
{
if ( m1 == m2 )
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
}
return 0;
}
int find(int x)
{
if ( x != T[x] )
return T[x] = find( T[x] );
return x;
}
void unite(int x,int y)
{
if ( rang[x] > rang[y] )
T[y]=x;
else
{
T[x]=y;
if ( rang[x] == rang[y] )
rang[y]++;
}
}