Pagini recente » Borderou de evaluare (job #2247267) | Cod sursa (job #1423493) | Cod sursa (job #2192450) | Cod sursa (job #946861) | Cod sursa (job #2212537)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N, M, S, x, y;
queue<int> Q;
vector<int> G[100003];
int sel[100003];
int lg[100003];
int main()
{
f >> N >> M >> S;
for(int i = 1; i <= M; i++) {
f >> x >> y;
G[x].push_back(y);
}
Q.push(S);
sel[S] = true;
while(!Q.empty()) {
int nod = Q.front();
for(auto it = G[nod].begin(); it != G[nod].end(); it++)
if(!sel[*it]) {
lg[*it] = lg[nod] + 1;
sel[*it] = true;
Q.push(*it);
}
Q.pop();
}
for(int i = 1; i <= N; i++)
if(i == S) g << "0 ";
else if(lg[i] == 0) g << "-1 ";
else g << lg[i] << " ";
return 0;
}