Pagini recente » Cod sursa (job #2469574) | Cod sursa (job #92767) | Cod sursa (job #2338559) | Cod sursa (job #567463) | Cod sursa (job #2674854)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 100000;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> ad[nmax+5];
vector <int> ::iterator it;
queue <int> q;
int n,m,s,vz[nmax+5];
int main() {
f >> n >> m >> s;
int x,y;
for(int i=1; i<=m; i++) {
f >> x >> y;
ad[x].push_back(y);
}
vz[s]++;
q.push(s);
while(!q.empty()) {
int now = q.front();
q.pop();
for(it=ad[now].begin(); it!=ad[now].end(); ++it)
if(!vz[*it]) {
vz[*it]=vz[now]+1;
q.push(*it);
}
}
for(int i=1; i<=n; ++i) {
if(!vz[i])
g << -1 << " ";
else {
if(i == s)
g << 0 << " ";
else
g << vz[i]-1 << " ";
}
}
return 0;
}