Pagini recente » Cod sursa (job #720954) | Cod sursa (job #2836686) | Cod sursa (job #34537) | Cod sursa (job #2918253) | Cod sursa (job #2915947)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n,m,s;
vector<vector<int>> ma;
void read() {
cin>>n>>m>>s;
ma.resize(n+1);
int a,b;
for(int i=1;i<=m;i++) {
cin>>a>>b;
if(a!=b) {
ma[a].push_back(b);
}
}
}
void solve() {
queue<pair<int,int>> q;
pair<int,int> nr;
vector<bool> visited(n+1);
bool ok;
for(int i=1;i<=n;i++) {
fill(visited.begin(),visited.end(),0);
visited[s]=1;
while(!q.empty()) {
q.pop();
}
if(s==i) {
cout<<"0 ";
continue;
}
q.push({s,0});
ok=0;
while(!q.empty()) {
nr=q.front();
q.pop();
if(nr.first==i) {
cout<<nr.second<<" ";
ok=1;
break;
}
for(auto j:ma[nr.first]) {
if(visited[j]==0) {
q.push({j,nr.second+1});
visited[j]=1;
}
}
}
if(!ok) {
cout<<"-1 ";
}
}
}
int main() {
read();
solve();
return 0;
}