Pagini recente » Cod sursa (job #2711099) | Cod sursa (job #3162496) | Cod sursa (job #630703) | Cod sursa (job #1275707) | Cod sursa (job #2398414)
#include <fstream>
#include <vector>
#define DIM 100002
using namespace std;
ifstream in ("bfs.in");
ofstream out("bfs.out");
vector<int> graf[DIM];
int n, m, s, x, y;
int dist[DIM], q[4 * DIM];
bool viz[DIM];
int main(int argc, const char * argv[]) {
in>>n>>m>>s;
for(int i = 1; i <= m; ++ i){
in>>x>>y;
graf[x].push_back(y);
}
int st = 1, dr = 1;
q[1] = s;
viz[s] = true;
while(st <= dr){
int node = q[st];
++ st;
for(int i = 0; i < graf[node].size(); ++ i){
int vecin = graf[node][i];
if(viz[vecin] == 0){
viz[vecin] = true;
dist[vecin] = dist[node] + 1;
++ dr;
q[dr] = vecin;
}
}
}
for(int i = 1; i <= n; ++ i){
if(dist[i] != 0 || i == s)
out<<dist[i]<<" ";
else
out<<"-1 ";
}
return 0;
}