Pagini recente » Cod sursa (job #2905749) | Cod sursa (job #917247) | Cod sursa (job #1286146) | Cod sursa (job #2351490) | Cod sursa (job #2924564)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int Nmax = 1e5 + 5;
vector<int> G[Nmax];
int ans[Nmax];
bool seen[Nmax];
int N, M, start;
void bfs(int node)
{
queue<pair<int,int>> Q;
Q.push({node, 0});
seen[node] = 1;
while(!Q.empty())
{
int nod_cur = Q.front().first;
int dist_cur = Q.front().second;
ans[nod_cur] = dist_cur;
for(auto i : G[nod_cur])
if(!seen[i])
{
seen[i] = 1;
Q.push({i, dist_cur + 1});
}
Q.pop();
}
}
int main()
{
in >> N >> M >> start;
while(M--)
{
int x, y;
in >> x >> y;
G[x].push_back(y);
}
bfs(start);
for(int i = 1; i <= N; ++i)
out << (seen[i] ? ans[i] : -1) << " ";
return 0;
}