Pagini recente » Cod sursa (job #1509779) | Cod sursa (job #2202401) | Cod sursa (job #3125686) | Cod sursa (job #602762) | Cod sursa (job #2447082)
#include <fstream>
#include <queue>
#include <list>
using namespace std;
list<unsigned int> * adjlist;
int * dist;
void bfs(unsigned int src)
{
queue<unsigned int> q;
q.push(src);
dist[src] = 0;
while(!q.empty()){
src = q.front();
q.pop();
for(list<unsigned int>::iterator it = adjlist[src].begin(); it != adjlist[src].end(); it++){
if(dist[*it] == -1){
q.push(*it);
dist[*it] = dist[src] + 1;
}
}
}
}
int main()
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
unsigned int n, i, j, src;
fin >> n >> i >> src;
adjlist = new list<unsigned int>[n + 1];
dist = new int[n + 1];
for(i = 0; i <= n; i++){
dist[i] = -1;
}
while(fin >> i >> j){
adjlist[i].push_back(j);
}
bfs(src);
for(i = 1; i <= n; i++){
fout << dist[i] << " ";
}
return 0;
}