Pagini recente » Istoria paginii runda/23dezile_3/clasament | Istoria paginii runda/barosaneala420 | Cod sursa (job #1503373) | Cod sursa (job #1345042) | Cod sursa (job #2309463)
#include<iostream>
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int N, M, S;
queue <int> q;
bool viz[100003];
vector <int> L[100003];
int niv[100003];
void Citire()
{
int x, y;
fin >> N >> M >> S;
cout << S;
for (int i = 1; i <= N; i++)
niv[i] = -1;
for (int i = 0; i < M; i++)
{
fin >> x >> y;
L[x].push_back(y);
/// L[y].push_back(x);
}
}
void Rezolva()
{
int j = 0, k = 0;
q.push(S);
viz[S] = 1;
niv[S] = 0;
while (!q.empty())
{
k = q.front();
for (j = 0; j < L[k].size(); j++)
{
if (!viz[L[k][j]])
{
viz[L[k][j]] = 1;
niv[L[k][j]] = niv[k] + 1;
q.push(L[k][j]);
}
}
q.pop();
}
}
void Afisare()
{
int i;
for (i = 1; i <= N; i++)
fout << niv[i] << " ";
fout << endl;
}
int main()
{
Citire();
Rezolva();
Afisare();
return 0;
}