Pagini recente » Cod sursa (job #1033952) | Cod sursa (job #735139) | Cod sursa (job #1629772) | Cod sursa (job #1098666) | Cod sursa (job #1170832)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, s, viz[100000], dist[100000];
vector<int> adj[100001];
void bfs(int s) {
queue<int> q;
int current;
q.push(s);
viz[s] = 1;
dist[s] = 0;
while(!q.empty()) {
current = q.front();
q.pop();
for(vector<int>::iterator it = adj[current].begin(); it != adj[current].end(); ++it) {
if(viz[*it] == 0) {
viz[*it] = 1;
dist[*it] = 1 + dist[current];
q.push(*it);
}
}
}
}
int main() {
int i, u, v;
fin >> n >> m >> s;
for(i = 0; i < m; i++) {
fin >> u >> v;
u--, v--;
adj[u].push_back(v);
}
for(i = 0; i < n; i++) dist[i] = -1;
bfs(s-1);
for(i = 0; i < n; i++) {
fout << dist[i] << " ";
}
return 0;
}