Pagini recente » Cod sursa (job #2691589) | Cod sursa (job #1387832) | Cod sursa (job #2402726) | Cod sursa (job #1154663) | Cod sursa (job #879130)
Cod sursa(job #879130)
#include<cstdio>
#include<vector>
#define Nmax 100004
using namespace std;
vector<int>v[Nmax];
vector<int>:: iterator it;
int n,m,s,cont,c[Nmax],t[Nmax],viz[Nmax];
void citire()
{
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&s);
for(int x,y,i=1; i<=m; ++i)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
}
}
void bfs(int x, int si, int sf)
{
c[si]=x;
viz[x]=1;
while(si<=sf)
{
for(it=v[c[si]].begin(); it<v[c[si]].end(); ++it)
if(!viz[*it])
{
c[++sf]=*it;
t[sf]=t[si]+1;
viz[*it]=t[sf];
}
++si;
}
}
int main()
{
citire();
bfs(s,1,1);
freopen("bfs.out","w",stdout);
viz[s]=0;
for(int i=1; i<=n; ++i)
if(!viz[i] && i!=s) printf("%d ",-1);
else printf("%d ",viz[i]);
return 0;
}