Pagini recente » Cod sursa (job #2341356) | Cod sursa (job #1346525) | Cod sursa (job #1150828) | Cod sursa (job #171760) | Cod sursa (job #2197741)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N, M, S, x, y, sol[100003];
vector<int> a[100003];
queue<pair<int, int>> q;
bool visit[100003];
int main()
{
f >> N >> M >> S;
for(int i = 0; i < M; i++)
f >> x >> y, a[x].push_back(y);
q.push({S, 0});
visit[S] = true;
while(!q.empty()) {
for(auto i = a[q.front().first].begin(); i != a[q.front().first].end(); i++) {
if(!visit[*i]) {
q.push({*i, q.front().second + 1});
sol[*i] = q.front().second + 1;
visit[*i] = true;
}
}
q.pop();
}
for(int i = 1; i <= N; i++)
if(S == i || sol[i] > 0) g << sol[i] << " ";
else g << "-1 ";
g << "\n";
return 0;
}