Pagini recente » Cod sursa (job #3324503) | Cod sursa (job #3322762) | Profil Eric_Radavoi | Cod sursa (job #1014879) | Cod sursa (job #3311999)
#include <fstream>
#include <vector>
#include <queue>
using std::vector;
struct Node{
vector<int> edges;
bool bejart;
int utHossz;
Node(){
bejart = false;
utHossz = -1;
}
void addEdge(int x){
edges.push_back(x);
}
int nrEdges(){
return edges.size();
}
};
int main(){
std::ifstream bem("bfs.in");
std::ofstream kim("bfs.out");
int n, m, s;
bem >> n >> m >> s;
vector<Node> nodes(n);
for(int i = 0; i < n; i++){
int x, y;
bem >> x >> y;
x--;
y--;
nodes[x].addEdge(y);
nodes[y].addEdge(x);
}
bem.close();
std::queue<Node> varoLista;
varoLista.push(nodes[s - 1]);
nodes[s - 1].utHossz = 0;
while(!varoLista.empty()){
Node jelenlegi = varoLista.front();
varoLista.pop();
for(int i = 0; i < jelenlegi.nrEdges(); i++){
if(!nodes[jelenlegi.edges[i]].bejart){
varoLista.push(nodes[jelenlegi.edges[i]]);
nodes[jelenlegi.edges[i]].utHossz = jelenlegi.utHossz + 1;
}
jelenlegi.bejart = true;
}
}
for(int i = 0; i < n; i++)
kim << nodes[i].utHossz << ' ';
}