Pagini recente » Cod sursa (job #1718013) | Cod sursa (job #3288542) | Cod sursa (job #1986306) | Cod sursa (job #1355548) | Cod sursa (job #1463643)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
typedef struct nod{
int key;
nod* next;
} *lnod;
void add(lnod &a,int key){
lnod b = new nod;
b->key = key;
b->next = a;
a = b;
}
lnod A[100010];
bool B[100010];
int N, M, S,cod[100010],k,rs[100010],nivel;
void BFS(int i){
B[i] = true;
for(lnod t = A[i];t;t = t->next)
if(!B[t->key]){
cod[++k] = t->key;
rs[t->key] = rs[i]+1;
}
}
int main(){
int x,y;
fin >> N >> M >> S;
for(int i = 0;i<M;i++){
fin >> x >> y;
add(A[x],y);
}
k = 1;
cod[1] = S;
for(int i = 1; i <= k ;i++){
if(!B[cod[i]]) BFS(cod[i]);
}
fout << '\n';
for(int i = 1;i<=N;i++){
if(i == S) fout << 0; else
if(rs[i]) fout << rs[i]; else
fout << -1;
fout << ' ';
}
return 0;
}