Pagini recente » Cod sursa (job #1912730) | Cod sursa (job #373993) | Cod sursa (job #2436773) | Cod sursa (job #190107) | Cod sursa (job #2162573)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 100005;
const int INF = LONG_MAX;
ofstream fout("bfs.out");
int N, M, S;
vector < int > L[Nmax];
queue < int > q;
int d[Nmax];
void Read()
{
ifstream fin("bfs.in");
fin >> N >> M >> S;
int x, y;
while(M--)
{
fin >> x >> y;
L[x].push_back(y);
}
fin.close();
}
void Initializare()
{
for (int i = 1; i <= N; i++)
d[i] = INF;
}
void BFS()
{
int nod;
d[S] = 0;
q.push(S);
while(!q.empty())
{
nod = q.front();
q.pop();
for (auto i : L[nod])
if (d[i] == INF) /// !viz[i]
{
d[i] = d[nod] + 1;
q.push(i);
}
}
}
void Afisare()
{
int i;
for (i = 1; i <= N; i++)
fout << (d[i] == INF? -1 : d[i]) << " ";
fout << "\n";
fout.close();
}
int main()
{
Read();
Initializare();
BFS();
Afisare();
return 0;
}