Pagini recente » Cod sursa (job #2242446) | Cod sursa (job #259863) | Cod sursa (job #1162273) | Cod sursa (job #2387360) | Cod sursa (job #705978)
Cod sursa(job #705978)
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
vector<long> a[100001];
long c[100001],lg[100001],m,s,i,v,b,n;
void bfs(int x)
{
long z=a[x].size();
for(long i=0;i<z;i++)
{
if(lg[a[x][i]]==-1)
{
lg[a[x][i]]=lg[x]+1;
bfs(a[x][i]);
}
else
if(lg[a[x][i]]>lg[x]+1)
{
lg[a[x][i]]=lg[x]+1;
bfs(x);
}
}
}
int main()
{
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%ld%ld",&v,&b);
a[v].push_back(b);
}
memset(lg,-1,sizeof(lg));
lg[s]=0;
bfs(s);
for(i=1;i<=n;i++)
printf("%ld ",lg[i]);
return 0;
}