Pagini recente » Cod sursa (job #2578035) | Cod sursa (job #389514) | Cod sursa (job #2874775) | Cod sursa (job #487800) | Cod sursa (job #904479)
Cod sursa(job #904479)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("bfs.in"); ofstream out("bfs.out");
int n,m,s;
vector <int> v[100001];
vector <int> viz;
queue <int> q;
void read()
{
int x,y,i;
in >> n >> m >> s;
viz.resize(n+1);
for(i=1;i<=m;i++)
{
in >> x >> y;
v[x].push_back(y);
}
for(i=1; i<=n; i++)
viz[i]=-1;
}
void bfs()
{
vector<int>::iterator it;
while (!q.empty())
{
int vf=q.front();
q.pop();
for (it=v[vf].begin(); it!=v[vf].end(); it++)
{
if(viz[*it]==-1)
{
q.push(*it);
viz[*it]=viz[vf]+1;
}
}
}
}
int main()
{
read();
viz[s]=0;
q.push(s);
bfs();
for(int i=1;i<=n;i++)
out << viz[i] << ' ';
}