Cod sursa(job #1356451)

Utilizator CalinCojoFMI Cojocaru Calin George CalinCojo Data 23 februarie 2015 13:59:52
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#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;
}