Pagini recente » Cod sursa (job #2076055) | Cod sursa (job #405498) | Cod sursa (job #2134633) | Cod sursa (job #805091) | Cod sursa (job #2819889)
#include <fstream>
#include <vector>
#include <queue>
#define lim 1000005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int nod,muchii,nodstart;
vector <int> m[lim];
queue <int> coada;
int dist[lim];
void bfs(){
while(!coada.empty()){
int n = coada.front(); // iau varful
coada.pop();
for(unsigned int i = 0; i < m[n].size(); ++i){
int v = m[n][i];
if(dist[v] == -1)
{
coada.push(v);
dist[v] = dist[n] + 1;
}
}
}
}
int main(){
in >> nod >> muchii >> nodstart;
for (int i = 1; i <= muchii; ++i) {
int x, y;
in >> x >> y;
m[x].push_back(y);
}
for(int i = 1; i <= nod; ++i)
dist[i] = -1;
dist[nodstart] = 0;
coada.push(nodstart);
bfs();
for(int i = 1; i <= nod; ++i)
out << dist[i] << " ";
}