Pagini recente » Cod sursa (job #72979) | Cod sursa (job #2357064) | Cod sursa (job #1162392) | Cod sursa (job #2019123) | Cod sursa (job #1363934)
#include <iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int c[100000],viz[100000],n,t[100000],s;
vector<int> a[100001];
vector<int>::iterator it;
void bfs(int nod)
{int u,p,i,x,ok,k=0;
u=p=viz[nod]=1;
c[1]=nod;
while(p<=u)
{x=c[p];
for(i=1;i<=n;i++)
{ok=0;
for(it=a[x].begin();it!=a[x].end();it++)
if(*it==i) ok=1;
if(ok==1 && viz[i]==0) {c[++u]=i;
viz[i]=1;
t[i]=x;
}
}
p++;
}
}
void parc(int fin)
{int k=0,i;
i=fin;
while(i)
{i=t[i];
k++;
}
k--;
if(k==0) if(s==fin) g<<"0"<<" ";
else g<<"-1"<<" ";
else g<<k<<" ";
}
int main()
{int m,x,y,i;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{f>>x;
f>>y;
a[x].push_back(y);
}
bfs(s);
for(i=1;i<=n;i++)
parc(i);
}