Pagini recente » Cod sursa (job #38378) | Cod sursa (job #2658259) | Cod sursa (job #1515886) | Cod sursa (job #364862) | Cod sursa (job #900604)
Cod sursa(job #900604)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");
long n,m,s,i,j,gr[100001],viz[100001];
vector <int> g[100001],q;
void read(){
long a,b;
fi >> n >> m >> s;
for (i=0; i<m; i++){
fi >> a >> b;
g[a].push_back(b);
}
}
void solve(){
viz[s]=1; q.push_back(s);
while (!q.empty()) {
long x=q.back(); q.pop_back();
vector <int>::iterator it;
for (it=g[x].begin(); it!=g[x].end(); it++){
if (!viz[*it]){viz[*it]=1; q.push_back(*it); gr[*it]=gr[x]+1;}
}
}
}
void write(){
for (i=1; i<=n; i++)
if ((!gr[i])&&(i!=s)) fo << "-1 "; else fo << gr[i] << " ";
}
int main(){
read();
solve();
write();
return 0;
}