Pagini recente » Cod sursa (job #2934673) | Cod sursa (job #1438975) | Cod sursa (job #1157660) | Cod sursa (job #160472) | Cod sursa (job #2144942)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
const int Nmax = 100005;
vector < int > L[Nmax];
int dist[Nmax], n, m, S;
bool viz[Nmax];
queue < int > Q;
void BFS()
{
Q . push(S);
viz[S] = true;
while(! Q . empty())
{
int x = Q . front();
Q . pop();
for(auto i : L[x])
if(!viz[i])
{
dist[i] = dist[x] + 1;
Q . push(i);
viz[i] = true;
}
}
}
int main()
{
int x, y;
fin >> n >> m >> S;
for(int i = 1 ; i <= m ; i++)
{
dist[i] = - 1;
fin >> x >> y;
L[x] . push_back(y);
}
dist[S] = 0;
BFS();
for(int i = 1 ; i <= n ; i++)
fout << dist[i] << " ";
fout << "\n";
fin.close();
fout.close();
return 0;
}