Pagini recente » Cod sursa (job #1245331) | Cod sursa (job #176076) | Istoria paginii runda/prep/clasament | Autentificare | Cod sursa (job #2602456)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define NMAX 100005
int l,n,m,start,x,y;
vector<int> a[NMAX];
int cost[NMAX],s[NMAX],g[NMAX];
void bfs(int nod)
{
memset(cost,-1,sizeof(cost));
l = 1;
cost[nod] = 0;
s[l] = nod;
for (int i = 1;i <=l;i ++){
for (int j = 0; j < g[s[i]];j ++){
if (cost[a[s[i]][j]] == -1){
s[++l] = a[s[i]][j];
cost[s[l]] = cost[s[i]] + 1;
}
}
}
}
int main()
{
fin >> n >> m >> start;
for (int i=1;i<=m;i++){
fin >> x >> y;
a[x].push_back(y);
}
for (int i=1;i<=n;i++)
g[i] = a[i].size();
bfs(start);
for (int i=1;i<=n;i++){
fout << cost[i] << ' ';
}
fout << " ";
return 0;
}