Pagini recente » Cod sursa (job #1327949) | Cod sursa (job #221164) | Cod sursa (job #3154067) | Cod sursa (job #2297998) | Cod sursa (job #743708)
Cod sursa(job #743708)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
int main(){
ifstream inr ("bfs.in");
ofstream our ("bfs.out");
int n,m,a,b,s,t;
inr >> n;
inr >> m;
inr >> s;
vector < vector<int> > g(n+1);
for(int i=1; i<=m; i++){
inr >> a;
inr >> b;
g[a].push_back(b);
}
int d[n+1], p[n+1], c[n+1];
queue<int> q;
for(int i=1; i<=n; i++){
d[i]=-1;
c[i]=1;
p[i]=0;
}
q.push(s);
d[s]=0;
c[s]=0;
p[s]=s;
while(!q.empty()){
t=q.front();
for(int i=0; i<g[t].size(); i++){
if(c[g[t][i]]){
q.push(g[t][i]);
p[g[t][i]]=t;
c[g[t][i]]=0;
d[g[t][i]]=d[t]+1;
}
}
q.pop();
}
for(int i=1; i<=n; i++){
our << d[i] << " ";
}
//cin.ignore(2);
}