Pagini recente » Cod sursa (job #122447) | Cod sursa (job #1392018) | Cod sursa (job #1269878) | Cod sursa (job #1157899) | Cod sursa (job #2388593)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define NMAX 100001
struct poz{
int val,i;
}aux,aux1;
vector <int>v[NMAX];
queue <poz>q;
int cnt,X,drum[NMAX];
bool seen[NMAX];
void bfs(){
aux.i=X;
aux.val=0;
q.push(aux);
while(!q.empty()){
aux=q.front();
seen[aux.i]=1;
q.pop();
for(int j=0;j<v[aux.i].size();j++){
if(!seen[v[aux.i][j]]){
drum[v[aux.i][j]]=aux.val+1;
aux1.i=v[aux.i][j];
aux1.val=aux.val+1;
q.push(aux1);
}
}
}
return;
}
int main()
{
int n,m;
in>>n>>m>>X;
for(int i=1;i<=m;i++){
int x,y;
in>>x>>y;
v[x].push_back(y);
}
bfs();
for(int i=1;i<=n;i++)
if(seen[i])
out<<drum[i]<<" ";
else
out<<-1<<" ";
return 0;
}