Cod sursa(job #855902)

Utilizator chimistuFMI Stirb Andrei chimistu Data 15 ianuarie 2013 19:49:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<cstdio>
#include<cstdlib>
#include<vector>
#define maxn 100001
using namespace std;

FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");

vector<int>v[maxn];
int coada[maxn],st,dr,n,m,s,i,a,b,viz[maxn],nod;

int main()
{
    fscanf(f,"%d%d%d",&n,&m,&s);
    for (i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&a,&b);
        v[a].push_back(b);
        }
    st=1;dr=1;
    coada[st]=s;
    for (i=1;i<=n;i++)
        viz[i]=-1;
    viz[s]=0;
    while (st<=dr)
    {
          nod=coada[st];
          for (i=0;i<v[nod].size();i++)
              if (viz[v[nod][i]]==-1)
              {
                 viz[v[nod][i]]=viz[nod]+1;
                 dr++;
                 coada[dr]=v[nod][i];
                 }
          st++;
          }
    for (i=1;i<=n;i++)
        fprintf(g,"%d ",viz[i]);
    return 0;
}