Cod sursa(job #626065)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 26 octombrie 2011 11:54:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
#include<vector>
using namespace std;
int viz[100005],n,m,x,y,cont=1,c[100001];
double long k,cost[100001];
vector <int> A[100001];
ofstream g("bfs.out");
void citire()
{
ifstream f("bfs.in");
int x,y;
f>>n>>m>>k;
int i;
   for(i=1;i<=m;i++)
   {
   f>>x>>y;
   A[x].push_back(y);
   }     
   f.close();
}

   void bfs(int k)
   {
   int li,ls,i,nr_vecini,nod;
   li=1;
   ls=1;
   c[li]=k;
   viz[k]=1;
     while(li<=ls)
        {
        nod=c[li];
        nr_vecini=A[nod].size();
           for(i=0;i<nr_vecini;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;
       
   
   
   }