Pagini recente » Cod sursa (job #1304026) | Cod sursa (job #3245888) | Cod sursa (job #2381004) | Cod sursa (job #1172482) | Cod sursa (job #724336)
Cod sursa(job #724336)
#include<stdio.h>
#include<vector>
#include<bitset>
using namespace std;
const int maxn=100002;
int c[maxn],cost[maxn];
vector <int>A[maxn];
//bitset<maxn>viz;
int viz[maxn];
int n,m,start;
void bfs(int ka)
{
int li, ls,nr_ve,nod,i;
li=1;
ls=1;
c[li]=ka;
viz[ka]=1;
while(li<=ls)
{
nod=c[li];
nr_ve=A[nod].size();
for(i=0;i<nr_ve;i++)
if(viz[A[nod][i]]==0)
{
ls++;
c[ls]=A[nod][i];
viz[A[nod][i]]=1;
cost[A[nod][i]]=cost[nod]+1;
}
li++;
}
}
int main()
{
int i,x,y;
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&start);
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
A[x].push_back(y);
}
bfs(start);
for(i=1;i<=n;i++)
if(cost[i]!=0 || i==start)
printf("%d ",cost[i]);
else
printf("-1 ");
return 0;
}