Pagini recente » Cod sursa (job #124973) | Cod sursa (job #36427) | Cod sursa (job #745651) | Cod sursa (job #1250860) | Cod sursa (job #1981788)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> vecini[100005];
deque<int> q;
int n,m,x,cost[100005],deparcurs[100005],start,a,b;
void bfs(int x)
{
for(int i=1;i<=n;++i) cost[i]=-1;
cost[x]=0;
q.push_front(x);
while(!q.empty())
{
start=q.front();
q.pop_front();
for(int i=0;i<deparcurs[start];++i)
{
if(cost[vecini[start][i]]==-1)
{
cost[vecini[start][i]]=cost[start]+1;
q.push_back(vecini[start][i]);
}
}
}
}
int main()
{
f>>n>>m>>x;
for(int i=1;i<=m;++i)
{
f>>a>>b;
vecini[a].push_back(b);
}
for(int i=1;i<=n;++i)
{
deparcurs[i]=vecini[i].size();
}
bfs(x);
for(int i=1;i<=n;++i)
{
g<<cost[i]<<' ';
}
return 0;
}