Pagini recente » Cod sursa (job #2770987) | Cod sursa (job #1538357) | Cod sursa (job #2375018) | Cod sursa (job #2459489) | Cod sursa (job #1376706)
# include <cstdio>
# include <vector>
# include <algorithm>
# define pb push_back
# define N 100010
# define vecin (*it)
using namespace std;
int i,j,nr,n,m,s,x,y;
vector <int> G[N];
int sol[N];
bool sel[N];
struct coada
{
int nod,cost;
}q[N];
void bf()
{
int nod;
q[++nr].nod=s;
q[nr].cost=0;
sel[s]=true;
for(int i=1; i<=nr; ++i)
{
nod=q[i].nod;
for(vector <int> :: iterator it=G[nod].begin(); it!=G[nod].end(); ++it)
if(!sel[vecin])
{
sel[vecin]=true;
q[++nr].nod=vecin;
q[nr].cost=q[i].cost+1;
}
}
}
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);
G[x].pb(y);
}
bf();
for(i=1; i<=n; ++i)
sol[i]=-1;
for(i=1; i<=nr; ++i)
sol[q[i].nod]=q[i].cost;
for(i=1; i<=n; ++i)
printf("%d ", sol[i]);
fclose(stdin);
fclose(stdout);
return 0;
}