Pagini recente » Cod sursa (job #1976067) | Cod sursa (job #2618460) | Cod sursa (job #819360) | Cod sursa (job #2097230) | Cod sursa (job #1605225)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int NMAX = 100000;
const int INF = 0x7fffffff;
int n; int m; int start;
queue<int> q;
bitset<NMAX + 1> vis;
vector<int> g[NMAX + 1];
vector<int> dist(NMAX + 1, INF);
void solve(int start) {
q.push(start);
dist[start] = 0;
vis[start] = true;
for(; q.empty() == false ; q.pop() ) {
int node = q.front();
for(int x : g[node])
if(vis[x] == false)
q.push(x), vis[x] = true, dist[x] = dist[node] + 1;
}
}
int main() {
fin >> n >> m >> start;
while(m--) {
int x; int y;
fin >> x >> y;
g[x].push_back(y);
}
solve(start);
for(int i = 1; i <= n; ++i)
dist[i] == INF ? fout << -1 << ' ' : fout << dist[i] << ' ' ;
return 0;
}