Pagini recente » Cod sursa (job #1335330) | Cod sursa (job #3232335) | Cod sursa (job #1346336) | Cod sursa (job #3307510) | Cod sursa (job #1718154)
#include <fstream>
using namespace std;
int parent[100001];
int ranks[100001];
void make(int k)
{
parent[k]=k;
ranks[k]=0;
}
int find(int k)
{
if(k!=parent[k])
{
parent[k]=find(parent[k]);
}
return parent[k];
}
void uni(int a, int b)
{
int ra=find(a);
int rb=find(b);
if(ra<rb)
{
parent[ra]=rb;
}
else if(ra>rb)
{
parent[rb]=ra;
}
else
{
parent[rb]=ra;
ranks[ra]++;
}
}
int main()
{
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N,M,t,x,y;
fin>>N>>M;
for(int i=1; i<N; i++)
{
make(i);
}
for(int i=1; i<=M; i++)
{
fin>>t>>x>>y;
if(t==1) uni(x,y);
else
{
if(find(x)==find(y)) fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}