Pagini recente » Cod sursa (job #2787608) | Cod sursa (job #2425081) | Cod sursa (job #803055) | Cod sursa (job #601407) | Cod sursa (job #350272)
Cod sursa(job #350272)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define pb push_back
#define NMAX 100005
vector <int> G[NMAX];
vector <int> queue;
int viz[NMAX],N,M,S,d[NMAX];
void bfs(int t)
{
int i,k,p=0;
for (i=1;i<=N;i++)
d[i]=-1;
queue.pb(t);
d[t] = 0;
viz[t] = 1;
while (p<queue.size())
{
k = queue[p];
for ( i = 0 ; i < G[k].size() ; i++)
if (!viz[G[k][i]])
{
queue.pb(G[k][i]);
d[G[k][i]] = d[k] + 1;
viz[G[k][i]] = 1;
}
p++;
}
}
int main()
{
int i,j,k=0,x,y;
freopen("bfs.in", "rt", stdin);
freopen("bfs.out", "wt", stdout);
scanf("%d %d %d",&N,&M,&S);
for (i=0;i<M;i++)
{
scanf("%d %d",&x,&y);
G[x].pb(y);
// G[y].pb(x);
}
bfs(S);
for (i=1;i<=N;i++)
printf("%d ",d[i]);
printf("\n");
return 0;
}