Pagini recente » Cod sursa (job #2226574) | Cod sursa (job #3226404) | Cod sursa (job #2345409) | Cod sursa (job #447909) | Cod sursa (job #559661)
Cod sursa(job #559661)
#include<stdio.h>
#include<fstream>
#include<vector>
using namespace std;
#define maxn 100010
vector <int> v[maxn];
int N, M, L, Start, G[maxn], Cost[maxn], S[maxn];
void BFS(int nod){ int i, j;
memset(Cost, -1, sizeof(Cost));
L = 1;
Cost[nod] = 0;
S[L] = nod;
for(i = 1; i<=L; i++)
for(j = 0; j<G[S[i]]; j++)
if(Cost[v[S[i]][j]] == -1){
S[++L] = v[S[i]][j];
Cost[S[L]] = Cost[S[i]] + 1;
}
}
int main(){
ifstream f ("bfs.in");
ofstream g ("bfs.out");
f >> N >> M >> Start;
for(int i=1; i<=M; i++){ int x, y;
f >> x >> y;
v[x].push_back(y);
}
for(int i=1; i<=N; i++){
G[i]=v[i].size();
}
BFS(Start);
for(int i=1; i<=N; i++)
g << Cost[i] << ' ';
return 0;
}