Pagini recente » Cod sursa (job #3230852) | Cod sursa (job #762506) | Cod sursa (job #1202235) | Cod sursa (job #3231640) | Cod sursa (job #3170056)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int N,M,S;
vector<int> adj[NMAX];
queue<int> q;
vector<bool> used;
vector<int> d;
void read() {
f >> N >> M >> S; S--;
used.resize(N);
d.resize(N);
for (int i=1;i<=M;i++) {
int x,y;
f >> x >> y;
x--; y--;
adj[x].push_back(y);
}
}
void bfs(int r) {
q.push(r);
used[r]=true;
while (!q.empty()) {
int v=q.front();
q.pop();
for (int u:adj[v]) {
if (!used[u]) {
used[u]=true;
q.push(u);
d[u]=d[v]+1;
}
}
}
}
void afis() {
for (int i=0;i<N;i++) {
if (i==S) g << "0 ";
else if (d[i]==0) g << "-1 ";
else g << d[i] << ' ';
}
}
int main()
{
read();
bfs(S);
afis();
return 0;
}