Pagini recente » Cod sursa (job #2970117) | Cod sursa (job #2903416) | Cod sursa (job #2101920) | Cod sursa (job #2906080) | Cod sursa (job #1417487)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int f[100005];
int getf(int i)
{
if(f[i]==i)
return i;
f[i]=getf(f[i]);
return f[i];
}
void q(int i, int j)
{
if(getf(i)==getf(j))
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
void unite(int i, int j)
{
i=getf(i);
j=getf(j);
if(rand()%2)
{
f[i]=j;
}
else
{
f[j]=i;
}
}
int main()
{int i,j,n,m,tip;
in>>n>>m;
for(i=1;i<=n;i++)
f[i]=i;
while(m--)
{
in>>tip;
in>>i>>j;
if(tip==1)
{
unite(i,j);
}
else
{
q(i,j);
}
}
return 0;
}