Pagini recente » prosoft-2016/clasament/9 | Cod sursa (job #1005154) | Cod sursa (job #3250459) | Cod sursa (job #3134595) | Cod sursa (job #228482)
Cod sursa(job #228482)
#include <cstdio>
#define N 100001
#define DIM 8192
#include <ctime>
#include <cstdlib>
char ax[DIM];
int pz;
inline void cit(int &x)
{
x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1,DIM,stdin),pz=0;
}
}
int t[N];
int n, m;
inline int find(int i)
{
if(t[i] != i) t[i]=find(t[i]);
return t[i];
}
inline void uneste(int i, int j)
{
i=find(i);
j=find(j);
if(i == j) return;
if(rand()&1)t[i]=j;else t[j]=i;
}
int main()
{
srand(time(0));
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
cit(n);cit(m);
int tp, p, q;
for(int i=1;i<=n;++i) t[i]=i;
while(m--)
{
cit(tp);cit(p);cit(q);
if(tp == 1) uneste(p,q);
else
{
if(find(p) == find(q)) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}