Pagini recente » Cod sursa (job #2686692) | Cod sursa (job #2482858) | Cod sursa (job #1064414) | Cod sursa (job #2236286) | Cod sursa (job #409738)
Cod sursa(job #409738)
#include<stdio.h>
#include<vector>
#include<deque>
using namespace std;
FILE *f=fopen("bfs.in","r");
FILE *g=fopen("bfs.out","w");
#define M 100001
vector<long>a[M];
long s,n,m;
vector<long> viz(M);
void cit()
{
long i,y,x;
fscanf(f,"%ld%ld%ld",&n,&m,&s);
for(i=1;i<=m;++i)
{
fscanf(f,"%ld%ld",&x,&y);
a[x].push_back(y);
}
fclose(f);
for(i=1;i<=n;++i)
viz[i]=-1;
}
void afis()
{
for(long i=1;i<=n;++i)
fprintf(g,"%ld ",viz[i]);
fclose(g);
}
void bfs()
{
long c[M*2];
long i,p,u;
viz[s]=0;
c[1]=s;
p=u=1;
while(p<=u)
{
s=c[p];
for(i=1;i<a[s].size();++i)
if(viz[a[s][i]]==-1) {c[++u]=i;
viz[i]=viz[s]+1;}
p++;
}
}
int main()
{
cit();
bfs();
afis();
return 0;
}