Pagini recente » Cod sursa (job #87632) | Cod sursa (job #394019) | Cod sursa (job #519915) | Cod sursa (job #443335) | Cod sursa (job #2699612)
#include <bits/stdc++.h>
using namespace std;
const int NMAX=(int)1e5;
const int INF = (int) 1e9;
bool vis[NMAX+1];
int dist[NMAX+1];
vector<int> adj[NMAX+1];
void bfs(int v) {
queue<int> q;
q.push(v);
vis[v]=true;
dist[v]=0;
while(!q.empty()) {
int e = q.front();
q.pop();
for(auto i:adj[e]) {
if(!vis[i]) {
vis[i] = true;
dist[i] = dist[e]+1;
q.push(i);
}
}
}
}
int main() {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N, M, S;
fin >> N >> M >> S;
for(int i=1;i<=M;i++) {
int a, b;
fin >> a >> b;
adj[a].push_back(b);
}
for(int i=1;i<=N;i++)
dist[i] = INF;
bfs(S);
for(int i=1;i<=N;i++) {
if(dist[i] == INF)
fout << -1 << ' ';
else
fout << dist[i] << ' ';
}
return 0;
}