Pagini recente » Cod sursa (job #2850503) | Cod sursa (job #3168495) | Cod sursa (job #2947932) | Cod sursa (job #53207) | Cod sursa (job #947974)
Cod sursa(job #947974)
#include<stdio.h>
#include<vector>
#define MAXN 100005
using namespace std;
vector <int> v[MAXN];
int n,m,k,i,x,y,dist[MAXN];
bool viz[MAXN];
void bfs()
{
int s=1,d=1,coada[MAXN];
coada[s]=k;
while(s<=d)
{
viz[coada[s]]=true;
for(i=0;i<(int) v[coada[s]].size();i++)
{
if(!viz[v[coada[s]][i]])
{
coada[++d]=v[coada[s]][i];
dist[coada[d]]=dist[coada[s]]+1;
viz[coada[d]]=true;
}
}
s++;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
v[x].push_back(y);
}
bfs();
for(i=1;i<=n;i++)
if(dist[i] || i==k)
printf("%d ",dist[i]);
else
printf("%d ",-1);
return 0;
}