Pagini recente » Cod sursa (job #2647596) | Cod sursa (job #2473840) | Cod sursa (job #1635231) | Borderou de evaluare (job #1634404) | Cod sursa (job #881269)
Cod sursa(job #881269)
#include<fstream>
#define dmax 100003
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,p[dmax],dpt[dmax];
void merge(int a, int b)
{
int ac=a, bc=b;
while(p[ac] != 0)
ac = p[ac];
while(p[bc] != 0)
bc = p[bc];
if(dpt[ac] < dpt[bc])
p[ac] = bc;
else p[bc] = ac;
}
void query(int a, int b)
{
int ac=a, bc=b;
while(p[ac] != 0)
ac = p[ac];
while(p[bc] != 0)
bc = p[bc];
if(ac == bc)
out<<"DA\n";
else out<<"NU\n";
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
dpt[i] = 1;
for(int i=0; i<m; i++)
{
int op, a, b;
in>>op>>a>>b;
if(op == 1)
merge(a, b);
else query(a, b);
}
in.close();
out.close();
return 0;
}