Pagini recente » Cod sursa (job #1703006) | Cod sursa (job #1790233) | Cod sursa (job #1701441) | Cod sursa (job #388411) | Cod sursa (job #545675)
Cod sursa(job #545675)
#include <fstream>
#include <deque>
#include <vector>
#include <iostream>
using namespace std;
#define maxN 100005
int N, M, S;
int cost[maxN];
vector < int > lista[maxN];
deque < int > coada;
void bf ()
{
coada.push_back(S);
cost[S] = 0;
for (unsigned int i = 0; i < coada.size(); ++ i)
{
int nod = coada[i];
for (unsigned int j = 0; j < lista[nod].size(); ++ j)
if (cost[lista[nod][j]] == -1)
{
coada.push_back(lista[nod][j]);
cost[lista[nod][j]] = cost[nod] + 1;
}
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f >> N >> M >> S;
for (int i = 1; i <= M; ++ i)
{
int x, y;
f >> x >> y;
lista[x].push_back(y);
}
memset (cost, -1, sizeof(cost));
bf ();
for (int i = 1; i <= N; ++ i)
g << cost[i] << " ";
f.close();
g.close();
return 0;
}