Pagini recente » Cod sursa (job #1155929) | Cod sursa (job #164400) | Cod sursa (job #1252646) | Cod sursa (job #1246491) | Cod sursa (job #2686420)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX=100010;
struct node
{
int parent;
int depth;
}graph[NMAX];
int findroot(int x)
{
if(graph[x].parent==0)
return x;
int parent=findroot(graph[x].parent);
graph[x].parent=parent;
return parent;
}
void read()
{
int n,m,t,x,y;
fin>>n>>m;
while(fin>>t>>x>>y)
{
if(t==1)
{
int r1=findroot(x);
int r2=findroot(y);
if(graph[r1].depth==graph[r2].depth)
{
graph[r1].parent=r2;
graph[r2].depth++;
}
else if(graph[r1].depth<graph[r2].depth)
graph[r1].parent=r2;
else
graph[r2].parent=r1;
}
else
{
if(findroot(x)==findroot(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
}
int main()
{
read();
return 0;
}