Pagini recente » Cod sursa (job #1100265) | Cod sursa (job #637835) | Cod sursa (job #1826356) | Cod sursa (job #944130) | Cod sursa (job #2432178)
#include <fstream>
#include <vector>
#include <queue>
#define nmax 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
class graf{
private:
vector<int> edges[nmax];
vector<bool> visited;
int nodes=0;
public:
graf(int n){
nodes=n;
visited.resize(n,0);
}
void addedge(int x,int y){
edges[x].push_back(y);
}
void bfs(int sursa){
vector<int> dist(nodes,-1);
queue<int> coada;
int i, nod;
visited[sursa]=1;
dist[sursa]=0;
coada.push(sursa);
while(!coada.empty()){
nod=coada.front();
coada.pop();
for(i=0;i<edges[nod].size();i++){
if(visited[edges[nod][i]]==0){
visited[edges[nod][i]]=1;
dist[edges[nod][i]]=dist[nod]+1;
coada.push(edges[nod][i]);
}
}
}
for(i=1;i<=nodes;i++)
if(!visited[i])
dist[i]=-1;
for(i=1;i<=dist.size();i++){
g<<dist[i]<<" ";
}
}
};
int main(){
int n, m, x, y, sursa, i;
f>>n>>m>>sursa;
graf graph(n);
for(i=0;i<m;i++){
f>>x>>y;
graph.addedge(x,y);
}
graph.bfs(sursa);
}