Pagini recente » Cod sursa (job #406621) | Cod sursa (job #721784) | Cod sursa (job #1138524) | Cod sursa (job #2120135) | Cod sursa (job #2357208)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
vector<int>v[100005];
int n,m,s,x,y,c[100005],r[100005];
bool viz[100005];
bool vecin(int x, int y)
{
for(auto k:v[x])
if(k==y)return true;
return false;
}
void BFS(int x)
{
viz[x]=true;
c[1]=x;
int p=1,u=1;
while(p<=u){
for(int i=1;i<=n;++i)
if(vecin(x,i) && !viz[i]){
c[++u]=i;
viz[i]=true;
r[i]=r[x]+1;
//g<<"Am ajuns in legatura:"<<x<<' '<<i<<'\n';
}
x=c[++p];
}
}
int main()
{
f>>n>>m>>s;
for(int i=0;i<m;++i){
f>>x>>y;
v[x].push_back(y);
//v[y].push_back(x);
}
BFS(s);
for(int i=1;i<=n;++i)
if(r[i])g<<r[i]<<' ';
else if(i==s)g<<0<<' ';
else g<<-1<<' ';
f.close(); g.close();
return 0;
}