Pagini recente » Cod sursa (job #732340) | Cod sursa (job #2317177) | Cod sursa (job #1799285) | Cod sursa (job #2744979) | Cod sursa (job #2007468)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int start,m,n;
int cost[100009];
queue < int > coada;
vector < int > v[100009];
void bfs( int start)
{
int i,j;
for(int i=1; i<=n; i++)
cost[i]=-1;
coada.push(start);
cost[start]=0;
while ( !coada.empty())
{
int head = coada.front();
coada.pop();
for(int j=0; j<v[head].size(); j++)
if(cost[v[head][j]]==-1)
{
coada.push(v[head][j]);
cost[v[head][j]]=cost[head]+1;
}
}
}
int main()
{
in>>n>>m>>start;
int x,y;
for(int i=1; i<=m; i++)
{
in>>x>>y;
v[x].push_back(y);
}
bfs(start);
for(int i=1; i<=n; i++)
out<<cost[i]<<' ';
return 0;
}