Pagini recente » Cod sursa (job #1010443) | Cod sursa (job #1316540) | Solutia problemei shoturi | Cod sursa (job #284057) | Cod sursa (job #354464)
Cod sursa(job #354464)
#include<stdio.h>
#define DIM 100005
struct nod
{
int x;
nod *urm;
} *lst[DIM];
int viz[DIM],c[DIM],n;
void add (int a,int b)
{
nod *p=new nod;
p->x=b;
p->urm=lst[a];
lst[a]=p;
}
int bfs (int x,int y)
{
int st,dr,i;
nod *p;
c[st=dr=1]=x;
for(i=1;i<=n;++i)
viz[i]=0;
while(st<=dr)
{
viz[c[st]]=1;
for(p=lst[c[st]];p;p=p->urm)
if(!viz[p->x])
{
if(p->x==y)
return 1;
c[++dr]=p->x;
}
++st;
}
return 0;
}
int main ()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int i,m,q,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&q,&x,&y);
if(q==1)
add(x,y),add(y,x);
else
{
if(bfs(x,y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}