Pagini recente » Cod sursa (job #1217296) | Cod sursa (job #3277724) | Cod sursa (job #1692606) | Cod sursa (job #2828999) | Cod sursa (job #2644167)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, start, x, y;
scanf("%d%d%d", &n, &m, &start);
vector<vector<int>> arcs(n+1);
vector<int> dist(n+1);
queue<int> q;
dist[start] = 1;
for(int i=0; i<m ;++i)
{
scanf("%d%d", &x, &y);
arcs[x].push_back(y);
}
q.push(start);
while(q.size()) {
x = q.front();
q.pop();
for(int i=0; i<arcs[x].size(); ++i)
if (dist[arcs[x][i]] == 0) {
dist[arcs[x][i]]= dist[x] + 1;
q.push(arcs[x][i]);
}
}
for(int i = 1; i<=n; ++i)
printf("%d ", dist[i] - 1);
return 0;
}