Pagini recente » Cod sursa (job #1092654) | Cod sursa (job #1707220) | Cod sursa (job #2263915) | Cod sursa (job #2811023) | Cod sursa (job #2837365)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[100002],h[100002];
void citire()
{
int i,j,tip,x,y;
fin>>n>>m;
for(j=1;j<=m;j++)
{
fin>>tip>>x>>y;
if(tip==1)
{
unire(x,y);
}
else
{
if(gasire(x)!=gasire(y))
fout<<"NU"<<'\n';
else
fout<<"DA"<<'\n';
}
}
}
int gasire(int x)
{
int r;
r=x;
while(tata[r])
r=tata[r];
while(tata[x])
{
int r2=tata[x];
tata[x]=r;
x=r2;
}
return r;
}
void unire(int x, int y)
{
x=gasire(x);
y=gasire(y);
if(x==y)
return;
if(h[x]<h[y])
{
tata[x]=y;
}
if(h[x]>h[y])
tata[y]=x;
if(h[x]==h[y])
{
tata[x]=y;
h[y]++;
}
}
int n,m;
int main()
{
citire();
return 0;
}