Pagini recente » Cod sursa (job #2708214) | Cod sursa (job #2748154) | Cod sursa (job #1191416) | Cod sursa (job #2349212) | Cod sursa (job #1417492)
#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 f[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);
}
f[i]=getf(i);
f[j]=getf(j);
}
return 0;
}