Cod sursa(job #416590)

Utilizator cosmyoPaunel Cosmin cosmyo Data 12 martie 2010 23:23:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<list>
#include<queue>
using namespace std;
typedef list<long> LI;
typedef queue<long> QU;
typedef LI::iterator IT;
LI L[100001];
long v[100001];
QU c;
long r,n,m;
void cit()
{ifstream fin("bfs.in");
  fin>>n>>m>>r;
  int i,x,y;
   for(i=1;i<=m;++i)
   {fin>>x>>y;
    L[x].push_back(y);
   }
 fin.close();
}
void bf()
{c.push(r);
 long k,i;
 IT it;
 for(i=1;i<=n;i++)
	 v[i]=-1;
 v[r]=0;
 while(!c.empty())
 {k=c.front();
   for(it=L[k].begin();it!=L[k].end();it++)
	if(v[*it]==-1) 
    {v[*it]=v[k]+1;
	  c.push(*it);
	 }
  c.pop();
 }  
}
void afis()
{IT it;
 int i;
 ofstream fout("bfs.out");
  for(i=1;i<=n;i++)
    fout<<v[i]<<" ";  
  fout.close();
}
int main()
{cit();
 bf();
 afis();
 return 0;
}