Pagini recente » Cod sursa (job #502541) | Cod sursa (job #2847825) | Cod sursa (job #2213531) | Cod sursa (job #212541) | Cod sursa (job #3243887)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int NMAX=1e5+5;
bool viz[NMAX];
int sol[NMAX];
int n;
vector <int>g[NMAX];
void reset(){
for(int i=1;i<=n;++i){
viz[i]=0;
}
}
void BFS(int st){
queue <int>q;
viz[st]=1;
q.push(st);
while(!q.empty()){
int h=q.front();
q.pop();
for(int i:g[h]){
if(!viz[i]){
sol[i]=sol[h]+1;
q.push(i);
viz[i]=1;
}
}
}
}
int main()
{
int start,m,x,y;
fin>>n>>m>>start;
for(int i=1;i<=m;++i){
fin>>x>>y;
g[x].push_back(y);
}
for(int i=1;i<=n;++i){
sol[i]=-1;
}
sol[start]=0;
BFS(start);
for(int i=1;i<=n;++i){
fout<<sol[i]<<" ";
}
return 0;
}