Pagini recente » Cod sursa (job #1397015) | Cod sursa (job #2795301) | Cod sursa (job #107294) | Cod sursa (job #563572) | Cod sursa (job #1382321)
#include <fstream>
#include <deque>
#include <vector>
#define n_max 100001
using namespace std;
ifstream r("bfs.in");
ofstream w("bfs.out");
vector <long>::iterator it;
vector <long> g[n_max];
deque <long> q;
long d[n_max];
bool viz[n_max];
long n,m,s;
void read() {
long i,j,k;
r>>n>>m>>s;
for (k=0; k<m; k++) {
r>>i>>j;
g[i].push_back(j);
}
}
void bf(long nod) {
long prec;
q.push_back(nod);
viz[nod]=true;
while (!q.empty()) {
prec=q.front();
q.pop_front();
for (it=g[prec].begin(); it!=g[prec].end(); it++)
if (!viz[*it]) {
viz[*it]=true;
d[*it]=d[prec]+1;
q.push_back(*it);
}
}
}
int main() {
long i;
read();
bf(s);
for (i=1; i<=n; i++)
if (!viz[i])
w<<-1<<" ";
else
w<<d[i]<<" ";
}