Pagini recente » Cod sursa (job #763971) | Cod sursa (job #1736379) | Cod sursa (job #3228764) | Cod sursa (job #2655376) | Cod sursa (job #943432)
Cod sursa(job #943432)
#include <cstdio>
#include <vector>
#include <queue>
#define nmax 100005
using namespace std;
int n,m,k;
vector <int> v[nmax];
queue <int> q;
int dist[nmax];
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
for (int i=1;i<=m;i++) {
int a,b;
scanf("%d %d",&a,&b);
v[a].push_back(b);
}
dist[k] = 1;
q.push(k);
while (!q.empty()) {
int crt = q.front(); q.pop();
while (!v[crt].empty()) {
int x = v[crt].back(); v[crt].pop_back();
if (!dist[x]) {
dist[x] = dist[crt] +1;
q.push(x);
}
}
}
for (int i=1;i<=n;i++) printf("%d ",dist[i]-1);
return 0;
}