Pagini recente » Cod sursa (job #1534327) | Cod sursa (job #2825693) | Cod sursa (job #24475) | Cod sursa (job #63959) | Cod sursa (job #1169259)
#include<cstdio>
#include<vector>
using namespace std;
vector<int>v[100005];
int coada[100005],cost[100005],viz[100005],plecare,n,m,nod1,nod2,i;
int bfs(int nod)
{
int ic=1;
int sf=1;
coada[1]=plecare;
viz[plecare]=1;
while(ic<=sf)
{
for(i=0;i<=v[coada[ic]].size()-1;i++)
{
if(!viz[v[coada[ic]][i]])
{
viz[v[coada[ic]][i]]=1;
coada[++sf]=v[coada[ic]][i];
cost[v[coada[ic]][i]]=cost[coada[ic]]+1;
}
}
ic++;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&plecare);
for(i=1;i<=m;i++)
{
scanf("%d%d",&nod1,&nod2);
v[nod1].push_back(nod2);
//v[nod2].push_back(nod1);
}
bfs(plecare);
for(i=1;i<=n;i++)
if(!viz[i])
cost[i]=-1;
for(i=1;i<=n;i++)
printf("%d ",cost[i]);
}