Pagini recente » Cod sursa (job #2077358) | Cod sursa (job #534258) | Cod sursa (job #1712829) | Cod sursa (job #515838) | Cod sursa (job #355618)
Cod sursa(job #355618)
#include<stdio.h>
#include<vector>
#define nmax 100010
using namespace std;
int n,m,x,i,j,cost[nmax],v1,v2,coada[nmax],first, last;
vector<vector<int> > a(nmax);
void bfs()
{
last=1;
coada[1]=x;
for(i=1;i<=last;i++)
for(j=0;j<a[coada[i]].size();j++)
if(cost[a[coada[i]][j]]==-1)
{
coada[++last]=a[coada[i]][j];
cost[a[coada[i]][j]]=cost[coada[i]]+1;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d", &n, &m, &x);
for(i=1;i<=m;i++)
{
scanf("%d %d", &v1, &v2);
a[v1].push_back(v2);
cost[i]=-1;
}
cost[x]=0;
bfs();
for(i=1;i<=n;i++)
printf("%d ", cost[i]);
printf("\n");
return 0;
}