Pagini recente » Cod sursa (job #893537) | Cod sursa (job #1419846) | Cod sursa (job #2800386) | Cod sursa (job #2000560) | Cod sursa (job #1395413)
#include <fstream>
#include <vector>
#include <queue>
#define inf 1<<30
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> v[100010];
queue<int> coada;
int frec[100010],n,m,start,i,a,b,dest,lung;
int main()
{
fin>>n>>m>>start;
for(i=0;i<m;++i){
fin>>a>>b;
v[a].push_back(b);
}
for(i=1;i<=n;++i)
frec[i] = inf;
frec[start] = 0;
coada.push(start);
while(!coada.empty()){
a = coada.front();
coada.pop();
lung = v[a].size();
for(i=0;i<lung;++i){
dest = v[a][i];
if(frec[dest] > frec[a] + 1){
frec[dest] = frec[a] + 1;
coada.push(dest);
}
}
}
for(i=1;i<=n;++i)
if(frec[i] == inf)
fout<<"-1 ";
else
fout<<frec[i]<<" ";
return 0;
}