Cod sursa(job #889946)

Utilizator alexsuciuAlex Suciu alexsuciu Data 24 februarie 2013 19:30:37
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<fstream>
using namespace std;
int i=1,j=1,k,prim,s;
long n,m,a[10000][10000],q[10000],viz[10000];
void citire(int &s)
{int x,y;
    ifstream f("bfs.in");
    f>>n>>m>>s;
    for(i=1;i<=m;i++)
    {f>>x>>y;
        a[x][y]=1;}
}

void bf(int s)
{
 if(i<=j)
     {prim=q[i];
     for(int k=1;k<=n;k++)
             if(a[prim][k]==1&&viz[k]==0)
                 {j++;
                  q[j]=k;
                  viz[k]=viz[prim]+1;
                  }
      i++;
      bf(s);
     }
 }

int main()
{
    citire(s);
    i=j=1;
    q[i]=s;
    viz[s]=1;
    bf(s);
    ofstream g("bfs.out");
    for(i=1;i<=n;i++)
        if(i==s)
        g<<0<<" ";
    else if(viz[i]==0) g<<-1<<" ";
    else g<<viz[i]-1<<" ";
}