Pagini recente » Cod sursa (job #2763821) | Cod sursa (job #1852209) | Cod sursa (job #639234) | Cod sursa (job #860654) | Cod sursa (job #829961)
Cod sursa(job #829961)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
queue <int> Q;
vector <int> V[100005];
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,p;
int viz[100005];
int nivel[100005];
int main(){
f>>n>>m>>p;
for(int i=1;i<=m;++i){
int x,y;
f>>x>>y;
V[x].push_back(y);
}
for(int i=1;i<=n;++i) nivel[i]=-1;
Q.push(p);
viz[p]=1;
nivel[p]=0;
while(!Q.empty()){
int a=Q.front(); Q.pop();
vector <int>::iterator it=V[a].begin(), sf=V[a].end();
for(; it!=sf;++it){
if(!viz[*it]){
viz[*it]=1;
nivel[*it]=nivel[a]+1;
Q.push(*it);
}
}
}
for(int i=1;i<=n;++i) g<<nivel[i]<<' ';
return 0;
}