Pagini recente » Cod sursa (job #2173636) | Cod sursa (job #2915381) | Cod sursa (job #2950601) | Cod sursa (job #292623) | Cod sursa (job #705164)
Cod sursa(job #705164)
#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(){
int cnt=0;
q.push(s);
int cur;
while(!q.empty()){
cur = q.front();
q.pop();
cnt++;
vector<int>::iterator it;
for(it = graf[cur].begin(); it!=graf[cur].end(); it++){
if(!viz[*it]){ q.push(*it); dist[*it]=cnt; }
}
viz[cur]=true;
}
}
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;
dist[s]=0;
bfs();
ofstream g("bfs.out");
for(int i=1;i<=n;i++) g << dist[i] <<" ";
g.close();
return 0;
}