Pagini recente » Cod sursa (job #1908398) | Cod sursa (job #2771209) | Cod sursa (job #2704280) | Cod sursa (job #1754723) | Cod sursa (job #1139525)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdio>
#include <cstring>
#define MAXN 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N, M, S;
vector<int> n[MAXN];
int nrv[MAXN], C[MAXN], cost[MAXN];
void read()
{
int x, y;
f >> N >> M >> S;
for(int i = 0; i < M; ++i)
{
f >> x >> y;
n[x].push_back(y);
nrv[x]++;
}
f.close();
}
void bfs()
{
int qi, qf;
qi = qf = 0;
memset(cost, -1, sizeof(cost));
C[0] = S;
cost[S] = 0;
while(qi <= qf)
{
for(int i = 0; i < nrv[C[qi]]; i++)
if(cost[n[C[qi]][i]] == -1)
C[++qf] = n[C[qi]][i], cost[C[qf]] = cost[C[qi]]+1;
++qi;
}
}
void afisare()
{
for(int i = 1; i <= N; ++i)
{
g << cost[i] << " ";
}
g.close();
}
int main()
{
read();
bfs();
afisare();
}