Cod sursa(job #695250)

Utilizator Cantor_paulCantor Paul Dan Cantor_paul Data 28 februarie 2012 11:28:14
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,c[100001];
double long k,cost[100001];
vector <int> A[100001];
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()
   {
   ofstream g("bfs.out");
   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;
       
   
   
   }