Pagini recente » Cod sursa (job #523456) | Cod sursa (job #1887758) | Cod sursa (job #1061658) | Cod sursa (job #2300063) | Cod sursa (job #2834298)
#include <fstream>
#include <vector>
#include <queue>
#define VI vector<int>
#define VVI vector<vector<int>>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, v, a, b;
bool Vis[100001];
int D[100001];
VVI G;
queue <int> Q;
void BFS(int s){
Vis[s] = 1;
D[s] = 0;
Q.push(s);
while(Q.size()){
int node = Q.front();
for(int i = 0; i < G[node].size(); ++i)
if(Vis[G[node][i]] == 0)
Vis[G[node][i]] = 1,
Q.push(G[node][i]),
D[G[node][i]] = D[node] + 1;
Q.pop();
}
}
int main() {
fin >> n >> m >> v;
G.resize(n + 1);
for(int i = 1; i <= n; ++i)
D[i] = -1;
for(int i = 1; i <= m; ++i){
fin >> a >> b;
G[a].emplace_back(b);
}
BFS(v);
for(int i = 1; i <= n; ++i)
fout << D[i] << " ";
return 0;
}