Pagini recente » Cod sursa (job #1714207) | Cod sursa (job #1565044) | Cod sursa (job #1542263) | Cod sursa (job #1820125) | Cod sursa (job #694598)
Cod sursa(job #694598)
#include<cstdio>
#include<vector>
#define nmax 100001
using namespace std;
vector<int> g[nmax];
int n,m,s,i,x,y,viz[nmax],c[nmax];
void citire()
{
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);
g[x].push_back(y);
}
}
void bfs(int k)
{
int p,u;
viz[k]=0;
p=u=1;
c[p]=k;
while(p<=u)
{
k=c[p++];
for(vector<int>::iterator it=g[k].begin(); it!=g[k].end(); it++)
if(viz[*it]==-1)
{
viz[*it]=viz[k]+1;
c[++u]=*it;
}
}
}
int main()
{
citire();
for(i=1;i<=n;i++)
viz[i]=-1;
bfs(s);
for(i=1;i<=n;i++)
printf("%d ", viz[i]);
return 0;
}