Pagini recente » Cod sursa (job #1677200) | Cod sursa (job #3122124) | Cod sursa (job #2159574) | Cod sursa (job #2467003) | Cod sursa (job #1166079)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> v[10010];
int q[10010];
int cost[10010];
int main()
{
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, m, s, x, y;
in>>n>>m>>s;
for(int i=1; i<=m; ++i)
{
in>>x>>y;
v[x].push_back(y);
}
int st=0,dr=0;
for(int i=1;i<=n;++i) cost[i]=-1;
cost[s]=0;
q[st]=s;
while(st<=dr)
{
for(int j=0; j<v[q[st]].size(); ++j)
{
if(cost[v[q[st]][j]]==-1)
{++dr;
q[dr]=v[q[st]][j];
if(q[dr]!=q[st]) cost[q[dr]]=cost[q[st]]+1;}
}
++st;
}
for(int i=1;i<=n;++i) out<<cost[i]<<" ";
return 0;
}