Pagini recente » Cod sursa (job #2757618) | Cod sursa (job #2987419) | Cod sursa (job #1720358) | Cod sursa (job #1135958) | Cod sursa (job #1239089)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream ka("bfs.in");
ofstream ki("bfs.out");
const int N_MAX = 100000;
int n, m, s, x, y;
int nivel[N_MAX + 1];
vector< vector<int> >graf(N_MAX + 1);
queue <int> coada;
int main()
{
ka >> n >> m >> s;
for(int i = 1; i <= m; i++)
{
ka >> x >> y;
graf[x].push_back(y);
}
coada.push(s);
nivel[s] = 1;
while(!coada.empty())
{
int n = coada.front();
coada.pop();
for(int i = 0; i < graf[n].size(); i++)
{
if(!nivel[graf[n][i]])
{
nivel[graf[n][i]]= nivel[n] + 1;
coada.push(graf[n][i]);
}
}
}
for(int i = 1; i <= n; i++)
{
if(nivel[i])
ki << nivel[i] - 1;
else
ki << -1;
ki << " ";
}
}