Pagini recente » Cod sursa (job #1755483) | Atasamentele paginii Profil aurelmva | Cod sursa (job #2503054) | Istoria paginii utilizator/ralu1977 | Cod sursa (job #2660636)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100000
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> listaArce[NMAX];
int n, m, s;
queue<int> coadaNoduri;
int costuri[NMAX];
void bfs(int nodStart)
{
coadaNoduri.push(nodStart);
costuri[coadaNoduri.front()] = 0;
while (!coadaNoduri.empty())
{
for (int i = 0; i < listaArce[coadaNoduri.front()].size(); i++)
{
if (costuri[listaArce[coadaNoduri.front()][i]] == -1)
{
costuri[listaArce[coadaNoduri.front()][i]] = costuri[coadaNoduri.front()] + 1;
coadaNoduri.push(listaArce[coadaNoduri.front()][i]);
}
}
coadaNoduri.pop();
}
for (int i = 1; i <= n; i++)
g << costuri[i] << ' ';
}
int main()
{
f >> n >> m >> s;
for (unsigned int i = 0; i < m; i++)
{
int nodS, nodD;
f >> nodS >> nodD;
listaArce[nodS].push_back(nodD);
}
for (int i = 1; i <= n; i++)
{
costuri[i] = -1;
}
bfs(s);
return 0;
}