Pagini recente » Cod sursa (job #285760) | Cod sursa (job #2484624) | Cod sursa (job #1953560) | Cod sursa (job #1893049) | Cod sursa (job #2031648)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define MAX 100001
using namespace std;
int n,m,s,x,y,r[MAX];
vector<int> nd[MAX];
queue<int> p;
bool acc[MAX];
int main()
{
ifstream f ("bfs.in");
ofstream g ("bfs.out");
f>>n>>m>>s;
for(int i=1;i<=m;i++) f>>x>>y,nd[x].push_back(y);
p.push(s);acc[s]=true;r[s]=0;
while(not p.empty()){
int i=p.front(),pa=r[i]; p.pop();
for(auto j:nd[i]){
if(not acc[j]){
p.push(j);
r[j]=pa+1; acc[j]=true;
}
}
}
for(int i=1;i<=n;i++){
if(r[i]!=0||i==s)g<<r[i]<<" ";
else g<<-1<<" ";
}
f.close ();
g.close ();
return 0;
}