Pagini recente » Cod sursa (job #2837890) | Cod sursa (job #1679376) | Cod sursa (job #1604077) | Cod sursa (job #1481058) | Cod sursa (job #2798081)
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
class graf
{
private:
int n;
vector< vector<int> > vecini;
public:
graf(int n);
void citire_graf_orientat(int m);
void citire_graf_neorientat(int m);
void BFS(int start);
void DFS(int start);
};
graf :: graf(int N)
{
this->n=N;
vecini.resize(n+1);
}
void graf :: citire_graf_orientat(int M)
{
int a,b;
for(int i=1;i<=M;i++){
cin>>a>>b;
vecini[a].push_back(b);
}
}
void graf :: citire_graf_neorientat(int m)
{
int a,b;
for(int i=1;i<=m;i++){
cin>>a>>b;
vecini[a].push_back(b);
vecini[b].push_back(a);
}
}
void graf :: BFS(int start)
{
queue <int> coada;
int nr_vecini_curent;
int distanta[this->n+1];
for(int i=1;i<=n;i++){
distanta[i]=-1;
}
coada.push(start);
distanta[start]=0;
while(coada.empty()==0){
nr_vecini_curent = vecini[coada.front()].size();
for(int i=0;i<nr_vecini_curent;i++){
if(distanta[vecini[coada.front()][i]]==-1){
coada.push(vecini[coada.front()][i]);
distanta[vecini[coada.front()][i]]=distanta[coada.front()]+1;
}
}
coada.pop();
}
for(int i=1;i<=n;i++){
g<<distanta[i]<<" ";
}
}
int n,m,S;
int main ()
{
f>>n>>m>>S;
graf G(n);
G.citire_graf_orientat(m);
G.BFS(S);
}