Pagini recente » Cod sursa (job #82433) | valioiancur | Cod sursa (job #1820670) | Cod sursa (job #2094161) | Cod sursa (job #1880231)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define N 100005
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> a[N];
queue <int> coada;
int n,m,s,l;
int cost[N];
void bfs(int x)
{
cost[x]=0;
int nod;
while (!coada.empty()) {
nod=coada.front();
coada.pop();
for (int i=0;i<a[nod].size();i++) {
if (cost[a[nod][i]]==-1) {
coada.push(a[nod][i]);
cost[a[nod][i]]=cost[nod]+1;
}
}
nod=coada.front();
}
}
int main()
{
fin>>n>>m>>s;
int x,y;
for (int i=0;i<m;i++) {
fin>>x>>y;
a[x].push_back(y);
}
for (int i=1;i<=n;i++) cost[i]=-1;
for (int i=1;i<=n;i++) {
coada.push(s);
bfs(s);
}
for (int i=1;i<=n;i++) fout<<cost[i]<<' ';
}