Pagini recente » Cod sursa (job #3207000) | Cod sursa (job #2657020) | Cod sursa (job #1014086) | Cod sursa (job #2624127) | Cod sursa (job #2117292)
#include <iostream>
#include <fstream>
#include <queue>
# define DIMM 100001
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, start, dist[DIMM];
vector <int> v[DIMM];
queue < int > Q;
void init()
{
for(int i=1; i<=n; i++)
dist[i]=-1;
}
void citire()
{
f>>n>>m>>start;
int x, y;
for(int i=1; i<=m; i++)
{
f>>x>>y;
v[x].push_back(y);
}
}
void bfs()
{
while(!Q.empty())
{
int nod = Q.front();
for (size_t i = 0; i<v[nod].size(); i++)
{
int vecin = v[nod][i];
if(dist[vecin]==-1)
{
dist[vecin]=dist[nod]+1;
Q.push(vecin);
}
}
Q.pop();
}
for(int i=1; i<=n; i++)
g<<dist[i]<<" ";
}
int main()
{
citire();
init();
Q.push(start);
dist[start]=0;
bfs();
return 0;
}