Pagini recente » Cod sursa (job #1973635) | Cod sursa (job #1547949) | Cod sursa (job #1239708) | Cod sursa (job #735653) | Cod sursa (job #2927436)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int main() {
int n,m,s,x,y,nod,dis;
f>>n>>m>>s;
queue<pair<int,int>>coada;
vector<vector<int>>lista(n+1);
vector<int>dist(n+1,-1);
vector<int>viz(n+1,0);
while(f){
f>>x>>y;
lista[x].push_back(y);
}
dist[s]=0;
viz[s]=1;
coada.push({s,dist[s]});
while(!coada.empty()){
nod=coada.front().first;
dis=coada.front().second;
coada.pop();
for(int i=0; i<lista[nod].size();i++)
{
if(viz[lista[nod][i]]!=1){
coada.push({lista[nod][i],dis+1});
dist[lista[nod][i]]=dis+1;
viz[lista[nod][i]]=1;
}
}
}
for(int i=1;i<n+1;i++){
g<<dist[i]<<" ";
}
return 0;
}