Pagini recente » Cod sursa (job #1937331) | Cod sursa (job #3130714) | Cod sursa (job #2617814) | Istoria paginii utilizator/p1ccolino | Cod sursa (job #1694885)
#include <fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
bool viz[100005], V[100005];
int n,m ,z, x, y,u, r[100005], h[100005];
typedef struct nod{
int info;
nod* next;
};
nod* c[100005];
void add(int i, int j){
nod* d= new nod;
d->info = j;
d->next = c[i];
c[i]=d;
}
void bfs(int i){
for(nod* p = c[i]; p; p= p->next){
if(!V[p->info]){
V[p->info] = 1;
h[++u] = p->info;
r[p->info] = r[i] + 1;
}
}
}
int main(){
u= 1;
cin>>n>>m>>z;
h[1] = z;
V[z] = 1;
for(int i = 1; i <= m; i++){
cin >> x >> y;
add(x,y);
}
for(int i = 1; i <= n; i++)
bfs(h[i]);
for(int i = 1; i <= n; i++){
if(i == z) cout << 0 << " ";
else if(r[i] != 0) cout << r[i] << " ";
else cout << -1 << " ";
}
return 0;
}