Pagini recente » Cod sursa (job #3159637) | Cod sursa (job #958508) | Cod sursa (job #1263834) | Cod sursa (job #1836447) | Cod sursa (job #2324667)
#include <fstream>
#include <queue>
#include <vector>
#define nmax 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s;
bool viz[nmax];
int l[nmax];
vector <int> V[nmax];
void Citire()
{int i,x,y;
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{fin>>x>>y;
V[x].push_back(y);
}
}
void BFS(int p)
{queue <int> C;
int v,i;
vector <int>::iterator it;
C.push(p); viz[p]=1;
l[p]=1;
while(!C.empty())
{v=C.front(); C.pop();
for(it=V[v].begin();it!=V[v].end();it++)
if(!viz[*it])
{C.push(*it); viz[*it]=1;
l[*it]=l[v]+1;
}
}
}
int main()
{int c,k=0,i;
vector <int>::iterator it;
Citire();
BFS(s);
for(i=1;i<=n;i++)
if(l[i]==0) fout<<"-1"<<" ";
else fout<<l[i]-1<<" ";
/*
for(i=1;i<=n;i++)
{for(it=V2[i].begin();it!=V2[i].end();it++)
fprintf(g,"%d ",*it);
fprintf(g,"\n");
}*/
return 0;
}