Pagini recente » Cod sursa (job #1676714) | Cod sursa (job #61387) | Cod sursa (job #2649564) | Cod sursa (job #2740192) | Cod sursa (job #228422)
Cod sursa(job #228422)
#include <queue>
#include <vector>
#include <fstream>
using namespace std;
const int NMAX=100001;
vector<int> a[NMAX];
ifstream f("bfs.in");
ofstream g("bfs.out");
int N,M,S;
void citeste(){
int i,j;
f>>N>>M>>S;
while (M--){
f>>i>>j;
a[i].push_back(j);
}
}
queue<int> q;
int d[NMAX];
void bf(){
memset(d,-1,sizeof(d));
d[S]=0;
q.push(S);
while (!q.empty()){
int x=q.front();
q.pop();
for (vector<int>::iterator it=a[x].begin();it!=a[x].end();++it)
if (d[*it]==-1)
d[*it]=d[x]+1,q.push(*it);
}
}
void scrie_sol(){
for (int i=1;i<=N;++i) g<<d[i]<<' ';
}
int main(){
citeste();
bf();
scrie_sol();
return 0;
}