Pagini recente » Cod sursa (job #2495079) | Cod sursa (job #2366467) | Istoria paginii utilizator/alle43221 | Cod sursa (job #740833) | Cod sursa (job #2298265)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,v[100015],c[100015],t[100015],cnt,x,y;
vector<int> L[100010];
void bfs(int start) {
v[start]=1; c[1]=start;
int p=1,u=1;
while (p<=u) {
int nod=c[p];
for (int i=0;i<L[nod].size();i++) {
int vecin=L[nod][i];
if (v[vecin]==0) {
v[vecin]=1;
c[++u]=vecin;
t[vecin]=nod;
}
}
p++;
}
}
int main() {
fin>>n>>m>>s;
while (m--) {
fin>>x>>y;
L[x].push_back(y);
}
bfs(s);
for (int i=1;i<=n;i++) {
if (i==s)
fout<<"0 ";
else {
cnt=0; int j=i;
while (t[j]!=0) {
cnt++;
if (t[j]==s)
break;
j=t[j];
}
if (t[j]!=0)
fout<<cnt<<" ";
else
fout<<"-1 ";
}
}
return 0;
}