Pagini recente » Cod sursa (job #3233535) | Cod sursa (job #771422) | Cod sursa (job #240349) | Cod sursa (job #68742) | Cod sursa (job #2559581)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int coada[100001];
int start=0,End=-1;
int n,m,s;
inline int pop()
{
return coada[start++];
}
inline bool empty()
{
return End<start;
}
inline int front()
{
return coada[start];
}
inline void push(int x)
{
coada[++End]=x;
}
vector<int> v[100001];
int cost[100001];
void bfs(int s)
{
push(s);
cost[s]=0;
while(!empty())
{
int nod = pop();
for(int x : v[nod])
if(cost[x]==-1)
{
cost[x]=cost[nod]+1;
push(x);
}
}
}
int main()
{
f>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int a,b;
f>>a>>b;
v[a].push_back(b);
}
for(int i=1;i<=n;i++)
cost[i]=-1;
bfs(s);
for(int i=1;i<=n;i++)
g<<cost[i]<<' ';
f.close();
g.close();
}