Pagini recente » Monitorul de evaluare | Profil tudorgalatan | Por Costel si Comisia de Cenzura | Profil Verde Flaviu-Cristian | Cod sursa (job #228664)
Cod sursa(job #228664)
#include <cstdio>
#include <queue>
#define N 100010
using namespace std;
typedef struct noduri
{
int val;
noduri *urm;
} adr;
adr *L[N],*p;
int n,m,i,x,y,nod,nr,rez[N];
char E[N];
queue<int> C;
void bfs(int nod)
{
adr *p;
E[nod]=1;
for (C.push(nod); !C.empty(); C.pop())
for (p=L[C.front()]; p; p=p->urm)
if (!E[p->val])
{
E[p->val]=1;
rez[p->val]=1+rez[C.front()];
C.push(p->val);
delete p;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&nod);
for (i=1; i<=m; i++)
{
scanf("%d %d\n",&x,&y);
p=new adr;
p->val=y; p->urm=L[x];
L[x]=p;
}
bfs(nod);
for (i=1; i<nod; i++)
if (rez[i]) printf("%d ",rez[i]);
else printf("-1 ");
printf("0 ");
for (i=nod+1; i<=n; i++)
if (rez[i]) printf("%d ",rez[i]);
else printf("-1 ");
return 0;
}