Pagini recente » Cod sursa (job #2366267) | Cod sursa (job #2324473) | Cod sursa (job #2739080) | Cod sursa (job #1051075) | Cod sursa (job #1513841)
#include <fstream>
#include <fstream>
#include <vector>
#include <queue>
#define pb push_back
#define N_MAX 100001
using namespace std;
vector <unsigned int> G[N_MAX];
bool viz[N_MAX];
int dist[N_MAX];
void bfs (int nod)
{
queue <unsigned int> Q;
Q.push(nod);
viz[nod] = true;
while (!Q.empty())
{
unsigned int prec = Q.front();
Q.pop();
for (int i=0; i < G[prec].size(); i++)
if (!viz[G[prec][i]])
{
viz[G[prec][i]] = true;
Q.push(G[prec][i]);
dist[G[prec][i]] = dist[prec] + 1;
}
}
}
int main()
{
ifstream r("bfs.in");
ofstream w("bfs.out");
int n, m, source, i, j;
r >> n >> m >> source;
for (int k = 0; k < m ; k++)
{
r >> i >> j;
G[i].pb(j);
}
bfs(source);
for (int i = 1; i <= n; i++)
if (viz[i])
w << dist[i]<< " ";
else
w << -1 << " ";
r.close();
w.close();
return 0;
}