Pagini recente » Cod sursa (job #2099061) | Cod sursa (job #750728) | Cod sursa (job #1676891) | Cod sursa (job #848387) | Cod sursa (job #2376618)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, s;
const int Inf = 0x3f3f3f3f;
vector<vector<int>> G;
vector<int> d;
vector<bool> v;
void read()
{
fin >> n >> m >> s;
G = vector<vector<int>>(n + 1);
d = vector<int>(n + 1, Inf);
v = vector<bool>(n + 1);
int a, b;
while(fin >> a >> b)
{
G[a].push_back(b);
}
}
void BFS(int x)
{
queue<int> Q;
Q.push(x);
v[x] = true;
d[x] = 0;
while(!Q.empty())
{
x = Q.front();
Q.pop();
for(auto& i : G[x])
{
if(!v[i])
{
Q.push(i);
d[i] = d[x] + 1;
v[i] = true;
}
}
}
}
void write()
{
for(int i = 1; i <= n; i++)
{
if(d[i] == Inf) fout << -1 << ' ';
else
fout << d[i] << ' ';
}
}
int main()
{
read();
BFS(s);
write();
return 0;
}