Pagini recente » Cod sursa (job #983094) | Cod sursa (job #2686681) | Cod sursa (job #2699180) | Cod sursa (job #2356797) | Cod sursa (job #798361)
Cod sursa(job #798361)
# include <stdio.h>
# include <vector>
using namespace std;
vector <int> v[100010];
int q[100010],n,m,s,p,u,l[100010],t[100010],i,x,y,nod;
bool viz[100010];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&s);
for (i=1; i<=m; i++)
{
scanf("%d %d\n",&x,&y);
if (x!=y)
v[x].push_back(y);
}
p=u=1;
q[1]=s;
for (i=1; i<=n; i++)
l[i]=100000;
l[s]=0; t[s]=0; viz[s]=true;
while(p<=u)
{
nod=q[p];
for (vector <int>:: iterator it=v[nod].begin(); it<v[nod].end(); it++)
if (viz[*it]==false)
{
viz[*it]=true;
t[*it]=nod;
u++;
q[u]=*it;
l[q[u]]=l[nod]+1;
}
p++;
}
for (i=1; i<=n; i++)
if (l[i]!=100000) printf("%d ",l[i]); else printf("-1 ");
printf("\n");
return 0;
}