Pagini recente » Cod sursa (job #1827827) | Cod sursa (job #2117437) | Cod sursa (job #2927452) | Cod sursa (job #2609288) | Cod sursa (job #1077125)
#include <fstream>
#include <vector>
#define IN "bfs.in"
#define OUT "bfs.out"
#define NMAX 100005
using namespace std;
ifstream in(IN);
ofstream out(OUT);
int main()
{
int n, m, s, a, b, st, dr, i, coada[NMAX], cost[NMAX];
vector <int> G[NMAX];
in>>n>>m>>s;
while(m)
{
in>>a>>b;
G[a].push_back(b);
--m;
}
//memset(cost, -1, n);
for(i=1; i<=n; ++i)
cost[i]=-1;
st=1, dr=1;
coada[st]=s;
cost[s]=0;
while(st<=dr)
{
for(i=0; i<G[coada[st]].size(); ++i)
if(cost[G[coada[st]][i]]==-1)
{
coada[++dr]=G[coada[st]][i];
cost[coada[dr]]=cost[coada[st]]+1;
}
++st;
}
for(i=1; i<=n; ++i)
out<<cost[i]<<' ';
out<<'\n';
in.close();
out.close();
return 0;
}