Pagini recente » Cod sursa (job #1575909) | Cod sursa (job #510444) | Cod sursa (job #384975) | Cod sursa (job #2826803) | Cod sursa (job #2357654)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int sef[100005];
inline int sefsup(int x)
{
if(sef[x]==x)
return x;
else
return sef[x]=sefsup(sef[x]);
}
void unire(int x, int y)
{
int sefsx=sefsup(x),sefsy=sefsup(y);
sef[sefsy]=sefsx;
}
int main()
{
// freopen("disjoint.in","r",stdin);
// freopen("disjoint.out","w",stdout);
int n,m,i,tip,a,b;
in>>n>>m;
for(i=1;i<=n;i++)
sef[i]=i;
for(i=1;i<=m;i++)
{
in>>tip>>a>>b;
if(tip==1)
unire(a,b);
if(tip==2)
{
if(sefsup(a)==sefsup(b))
out<<"DA"<<endl;
else
out<<"NU"<<endl;
}
}
return 0;
}