Pagini recente » Cod sursa (job #3207707) | Cod sursa (job #2881994) | Cod sursa (job #3218860) | Cod sursa (job #2325000) | Cod sursa (job #2739183)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
const int NMAX = 100005;
vector < vector < int > > lista(NMAX);
bool vizitat[NMAX];
int N, M, X, dist[NMAX];
void init()
{
for(int i = 1; i <= N; i++)
dist[i] = -1;
}
void BFS(int nod)
{
int coada[NMAX] = {0};
vizitat[nod] = true;
dist[nod] = 0;
coada[1] = nod;
int pr = 1, ul = 1;
while(pr <= ul)
{
int node = coada[pr];
for(unsigned int i = 0; i < lista[node].size(); i++)
{
if(!vizitat[lista[node][i]])
{
vizitat[lista[node][i]] = true;
coada[++ul] = lista[node][i];
dist[lista[node][i]] = dist[node] + 1;
}
}
pr++;
}
for(int i = 1; i <= N; i++)
fout << dist[i] << ' ';
}
int main()
{
fin >> N >> M >> X; int x, y;
init();
for(int i = 0; i < M; i++)
{
fin >> x >> y;
lista[x].push_back(y);
}
BFS(X);
fin.close();
fout.close();
return 0;
}