Pagini recente » Cod sursa (job #672250) | Cod sursa (job #2133158) | Cod sursa (job #2049827) | Cod sursa (job #2854008) | Cod sursa (job #1435876)
#include <fstream>
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#define DN 100005
#define LL long long
using namespace std;
vector <int> gr[DN];
int viz[DN], lev[DN];
void bfs(int node){
int x;
queue <int> q;
q.push(node);
lev[node] = 0;
while(!q.empty()){
x = q.front();
q.pop();
viz[x] = 1;
for(int i = 0; i < gr[x].size(); ++i){
if(!viz[gr[x][i]]){
lev[gr[x][i]] = lev[x] + 1;
q.push(gr[x][i]);
}
}
}
}
int main() {
int n, m, s, x, y, res = 0;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin >> n >> m >> s;
for(int i = 0; i < m; ++i){
fin >> x >> y;
gr[x].push_back(y);
}
for(int i = 1; i <= n; ++i)
lev[i] = -1;
bfs(s);
for(int i = 1; i <= n; ++i){
fout << lev[i] << " ";
}
return 0;
}