Cod sursa(job #403662)

Utilizator butabuta radu gabriel buta Data 25 februarie 2010 10:13:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
#include<vector>

using namespace std;
 vector<int> A[100001];
 
 int m,n,x,y,s,c[100001],viz[100001],cost[100001];
 
 void citire()
 { 
	 
	 int i;
	 ifstream f("bfs.in");
		 f>>n>>m>>s;
		 
	 		for(i=0;i<=n;i++)  
         cost[i]=-1; 
         for(i=1;i<=m;i++) 
{ 
         f>>x>>y; 
		A[x].push_back(y); 
     
}          
f.close(); 
}

void bfs(int nod)
{ int li,ls,nr_vecini,i;
	li=1;ls=1;
	c[li]=nod;viz[nod]=1;cost[nod]=0;
	
	while(li<=ls)
	{ 
		nr_vecini=A[c[li]].size();
		for(i=0;i<nr_vecini;i++)
			if (cost[A[c[li]][i]]==-1)
			{ ls++;
		c[ls]=A[c[li]][i];
		viz [A[c[li]][i]]=1;
		cost [A[c[li]][i]]=cost[c[li]]+1;
		
			}
			li++;
	
		}
}
void afisare()

{ int i;
	ofstream g("bfs.out");
for(i=1;i<=n;i++)
g<<cost[i]<<" ";
g.close();
}
int main()
			{citire();
			bfs(s);
			afisare();
			return 0;
			}