Pagini recente » Cod sursa (job #2817781) | Monitorul de evaluare | Cod sursa (job #2185361) | Cod sursa (job #2594212) | Cod sursa (job #2926616)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int NMAX = 1e5+5;
vector<int>adj[NMAX];
int n, m, dist[NMAX], x;
bool viz[NMAX];
inline void solve()
{
//memset(dist, 0, sizeof(dist));
queue<int>q;
q.push(x);
viz[x] = 1;
while(!q.empty())
{
int i = q.front();
//cout << i << ' ';
for(auto itr : adj[i])
{
if(!viz[itr])
{
dist[itr] = dist[i]+1;
q.push(itr);
viz[itr] = 1;
}
}
q.pop();
}
dist[x] = 0;
for(int i=1;i<=n;++i)
{
if(!viz[i])
fout << -1 << ' ';
else
fout << dist[i] << ' ';
}
}
int main()
{
fin >> n >> m >> x;
for(int i=1;i<=m;++i)
{
int x1, y1;
fin >> x1 >> y1;
adj[x1].push_back(y1);
}
solve();
}