Pagini recente » Cod sursa (job #1057744) | Cod sursa (job #54320) | Cod sursa (job #3037546) | Cod sursa (job #1591328) | Cod sursa (job #1129024)
#include<cstdio>
#include<vector>
#include<cstring>
#define Max 100005
using namespace std;
int x,y,m,n,s,l,viz[Max],c[Max];
vector <int> a[Max];
void bfs(int nod)
{
int i,j;
memset(viz,-1,sizeof(viz));
l=1; c[1]=nod; viz[nod]=0;
for(i=1;i<=l;++i)
for(j=0;j<a[c[i]].size();++j)
if(viz[a[c[i]][j]]==-1)
{
c[++l]=a[c[i]][j];
viz[c[l]]=viz[c[i]]+1;
}
}
int main()
{
int i;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);
}
for(i=1;i<=n;++i)
bfs(s);
for(i=1;i<=n;++i) printf("%d ",viz[i]);
return 0;
}