Pagini recente » Cod sursa (job #369973) | Cod sursa (job #1555687) | Cod sursa (job #1622370) | Cod sursa (job #2479339) | Cod sursa (job #2494326)
#include <iostream>
#include <fstream>
#include <list>
#include <iterator>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
list<int>graph[102005];
queue<int>nodeToBeVisited;
int marked[102005];
int n, m, x, y, source;
void BFS(int currentNode){
marked[currentNode] = 1;
nodeToBeVisited.push(currentNode);
while(!nodeToBeVisited.empty()){
currentNode = nodeToBeVisited.front();
for(list<int>::iterator it = graph[currentNode].begin(); it != graph[currentNode].end(); it++)
if(!marked[*it]){
marked[*it] = marked[currentNode] + 1;
nodeToBeVisited.push(*it);
}
nodeToBeVisited.pop();
}
}
int main()
{
fin >> n >> m >> source;
for(int i = 1; i <= m; i++){
fin >> x >> y;
graph[x].push_back(y);
}
BFS(source);
for(int i = 1; i <= n; i++)
fout << marked[i] - 1<< ' ';
return 0;
}