Pagini recente » Cod sursa (job #1219326) | Cod sursa (job #100075) | Cod sursa (job #2131676) | Cod sursa (job #164655) | Cod sursa (job #1594120)
#include <fstream>
#include <vector>
#include <queue>
#define IN "bfs.in"
#define OUT "bfs.out"
#define pb push_back
#define DMAX 100008
using namespace std;
ifstream fin(IN);
ofstream fout(OUT);
vector <int> a[DMAX];
int n, m, s;
int dist[DMAX];
void read();
void solve();
void show();
int main(){
read();
solve();
show();
return 0;
}
void show(){
int i;
for (i = 1; i <= n; ++i)
fout <<dist[i] - 1<<' ';
fout <<'\n';
fout.close();
}
void solve(){
queue <int> c;
c.push(s);
dist[s] = 1;
int node, i, dim;
while (!c.empty()){
node = c.front();
c.pop();
//showtime
dim = a[node].size();
for (i = 0; i < dim; ++i)
if (!dist[ a[node][i] ]){
c.push(a[node][i]);
dist[ a[node][i] ] = dist[node] + 1;
}
}
}
void read(){
fin >>n>>m>>s;
int i, x, y;
for (i = 0; i < m; ++i){
fin >>x>>y;
a[x].pb(y);
}
}