Cod sursa(job #671528)

Utilizator bursuc13bogdan bursuc13 Data 31 ianuarie 2012 17:09:24
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <fstream>
#include <vector>
using namespace std;
const int maxn=40100;
int viz[maxn],c[maxn],k,n,m,i,x,y;
long long cost[maxn];
vector <int> A[maxn];
ifstream f("bfs.in");
ofstream g("bfs.out");
void citire()
{
     int x,y,i;
     f>>n>>m>>k;
     for(i=1;i<=n;i++)
     {
                      f>>x>>y;
                      A[x].push_back(y);
                      }
     g.close();
     }
void bfs(int k)
{
     int li,ls,i,nod,NV;
     li=1;
     ls=1;
     c[li]=k;
     viz[k]=1;
     while(li<=ls)
     {
                  nod=c[li];
                  NV=A[nod].size();
                  for(i=0;i<NV;i++)
                  if(viz[A[nod][i]]==0)
                  {
                                      ls++;
                                      c[ls]=A[nod][i];
                                      viz[A[nod][i]]=1;
                                      cost[A[nod][i]]=cost[nod]+1;
                                      }
                  li++;
                  }
                  
                  }
                  
int main()
{
    int i;
    citire();
    bfs(k);
   
    for(i=1;i<=n;i++)
    if(cost[i]!=0||i==k)
    g<<cost[i]<<" ";
    else
    g<<-1<<" ";
    g.close();
    return 0;
}