Pagini recente » Cod sursa (job #1919934) | Cod sursa (job #1126265) | Cod sursa (job #252426) | Cod sursa (job #1089404) | Cod sursa (job #957967)
Cod sursa(job #957967)
#include<cstdio>
#include<vector>
using namespace std;
vector<int> a[100002];
int i,n,m,s,x,y,p,u,nod,v[1000004],lg[100004];
bool sel[100004];
void bf(int x)
{
sel[x]=true;
for(i=1;i<=n;i++)
{
lg[i]=-1;
}
p=1;u=1;v[1]=x;lg[x]=0;
while(p<=u)
{
nod=v[p];
for(i=0;i<a[nod].size();i++)
{
if(!sel[a[nod][i]])
{
v[++u]=a[nod][i];
sel[a[nod][i]]=true;
lg[a[nod][i]]=lg[nod]+1;
}
}
p++;
}
for(i=1;i<=n;i++)
{
printf("%d ",lg[i]);
}
printf("\n");
}
int main()
{
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);
}
bf(s);
}