Pagini recente » Cod sursa (job #2953597) | Cod sursa (job #1893113) | Cod sursa (job #2694291) | Cod sursa (job #2748015) | Cod sursa (job #705167)
Cod sursa(job #705167)
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 100001
using namespace std;
int n,m,s;
queue<int> q;
vector<int> graf[NMAX];
int dist[NMAX];
bool viz[NMAX];
void bfs(){
q.push(s);
dist[s]=0;
int cur;
while(!q.empty()){
cur = q.front();
q.pop();
viz[cur]=true;
vector<int>::iterator it;
for(it = graf[cur].begin(); it!=graf[cur].end(); it++){
if(!viz[*it]){ q.push(*it); dist[*it]=dist[cur]+1; }
}
}
}
int main(){
ifstream f("bfs.in");
f >> n >> m >> s;
int a,b;
for(int i=0; i<m; i++){
f>>a>>b;
graf[a].push_back(b);
}
f.close();
for(int i=1;i<=n;i++) dist[i]=-1;
bfs();
ofstream g("bfs.out");
for(int i=1;i<=n;i++) g << dist[i] <<" ";
g.close();
return 0;
}