Pagini recente » Cod sursa (job #24013) | Cod sursa (job #2423288) | Cod sursa (job #1307346) | Cod sursa (job #926517) | Cod sursa (job #2191396)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int>A[100001];
int C[100001],m,n,s,v[100001],d[100001],l=1,k=1;
void BFS(int s)
{
C[1]=s;
v[s]=1;
while(k<=l)
{
for(int i=0;i<A[C[k]].size();i++)
if(v[A[C[k]][i]]==0)
{l=l+1;C[l]=A[C[k]][i];d[A[C[k]][i]]=d[C[k]]+1;v[A[C[k]][i]]=1;}
k++;
}
for(int i=1;i<=n;i++)
if(v[i]==0)
d[i]=-1;
}
int main()
{
f>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
A[x].push_back(y);
}
BFS(s);
for(int i=1;i<=n;i++)
g<<d[i]<<' ';
return 0;
}