Pagini recente » Cod sursa (job #560894) | Cod sursa (job #2370388) | Cod sursa (job #2424357) | Monitorul de evaluare | Cod sursa (job #1705364)
#include <fstream>
#include <list>
#include <vector>
#include <queue>
using namespace std;
#define NOT_VIS -1
struct Node{
int dist;
list<int> neigh;
Node(){
dist = NOT_VIS;
}
};
int main(){
int N, M, S;
int i,u,v;
vector<Node> nodes;
ifstream in("bfs3.in");
ofstream out("bfs3.out");
in >> N >> M >> S;
nodes.resize(N+1);
for(i = 0; i < M; i++){
in >> u >> v;
nodes[u].neigh.push_back(v);
}
queue<int> qu;
nodes[S].dist = 0;
qu.push(S);
int cnode;
list<int>::iterator it;
while(!qu.empty()){
cnode = qu.front();
qu.pop();
for(it = nodes[cnode].neigh.begin();
it != nodes[cnode].neigh.end();
it++)
if(nodes[*it].dist == NOT_VIS){
nodes[*it].dist = nodes[cnode].dist + 1;
qu.push(*it);
}
}
for(i = 1; i <= N; i++)
out<<nodes[i].dist<<" ";
in.close();
out.close();
return 0;
}