Pagini recente » Cod sursa (job #1663150) | Cod sursa (job #2160214) | Cod sursa (job #1374927) | Cod sursa (job #1537573) | Cod sursa (job #264845)
Cod sursa(job #264845)
#include<stdio.h>
#include<string>
#include<vector>
using namespace std;
FILE*fin=fopen("bfs.in","r");
FILE*fout=fopen("bfs.out","w");
#define nm 100005
#define pb push_back
int n,m,used[nm],c[nm],ans[nm],s;
vector<int> g[nm];
int main()
{
int i,a,b,st,dr,nod,nnod;
fscanf(fin,"%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d",&a,&b);
g[a].pb(b);
}
ans[s]=0;
st=dr=0;
c[st]=s;
memset(used,0,sizeof(used));
used[s]=1;
while(st<=dr)
{
nod=c[st];
for(i=0;i<g[nod].size();i++)
{
nnod=g[nod][i];
if(!used[nnod])
{
used[nnod]=1;
ans[nnod]=ans[nod]+1;
dr++;
c[dr]=nnod;
}
}
st++;
}
for(i=1;i<=n;i++)
if(!used[i]) ans[i]=-1;
for(i=1;i<=n;i++)
fprintf(fout,"%d ",ans[i]);
fclose(fin);
fclose(fout);
return 0;
}