Pagini recente » Cod sursa (job #1561736) | Cod sursa (job #27170) | Cod sursa (job #851883) | Cod sursa (job #2819546) | Cod sursa (job #840841)
Cod sursa(job #840841)
#include <cstdio>
#include <cstdlib>
#include<vector>
using namespace std;
int cate[100100];
vector<int> drum[100100];
int viz[100100];
int n,m;
int coada[100100];
int bfs(int k)
{
//memset(coada,0,sizeof(coada));
int st=1,fin=1;
coada[st]=k;
viz[k]=1;
while(st<=fin)
{
for(int i=1;i<=cate[coada[st]];i++)
{
if(!viz[drum[coada[st]][i]])
{
coada[++fin]=drum[coada[st]][i];
viz[coada[fin]]=viz[coada[st]]+1;
}
}
st++;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int s;
scanf("%d%d%d",&n,&m,&s);
int sp,st;
for(int i=1;i<=n;i++)
drum[i].push_back(0);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&st,&sp);
drum[st].push_back(sp);
cate[st]++;
//cate[sp]++;
}
bfs(s);
for(int i=1;i<=n;i++)
printf("%d ",viz[i]-1);
return 0;
}