Pagini recente » Cod sursa (job #1553183) | Cod sursa (job #1728986) | Cod sursa (job #3160233) | Cod sursa (job #2872094) | Cod sursa (job #1039656)
#include <iostream>
#include <cstdio>
#include <vector>
#include <deque>
#define Nmax 20000
using namespace std;
deque <int> d;
int a[Nmax][Nmax],cost[Nmax];
bool viz[Nmax];
int n,i,j,s;
void reading(int &n,int &s)
{
int m;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(i=1;i<=m;++i)
{
int x,y;
scanf("%d %d",&x,&y);
++a[x][0];a[x][a[x][0]]=y;
}
}
void bfs()
{
int x=s;
cost[x]=0;
viz[x]=1;
d.push_front(x);
while(!d.empty())
{
x=d.front();
d.pop_front();
for(i=1;i<=a[x][0];++i)
if (!viz[a[x][i]])
{
d.push_back(a[x][i]);
viz[a[x][i]]=1;
cost[a[x][i]]=cost[x]+1;
}
}
}
int main()
{
reading(n,s);
bfs();
for(i=1;i<=n;++i)
if (!viz[i]) printf("%d ",-1);
else printf("%d ",cost[i]);
return 0;
}