Pagini recente » Cod sursa (job #987759) | Cod sursa (job #1702300) | Cod sursa (job #501754) | Cod sursa (job #1313873) | Cod sursa (job #2492984)
#include <fstream>
#include <vector>
//using namespace std ;
std:: ifstream in("bfs.in");
std:: ofstream out("bfs.out");
const int NMAX=100005;
int N , M,sol[NMAX],U;
bool vizitat[NMAX];
std:: vector <int> muchii[NMAX];
void initializare(){
for(int i=1; i<= NMAX;i++)
sol[i]=-1;
}
void BFS(){
int coada[NMAX],k=0;
coada[0]=U,sol[U]=0,vizitat[U]=true;
for(int i = 0 ;i<=k;i++)
{
for(unsigned int j = 0 ;j< muchii[coada[i]].size();j++)
if(vizitat[muchii[coada[i]][j]]==false)
coada[++k]=muchii[coada[i]][j],
sol[muchii[coada[i]][j]] = sol[coada[i]]+1,
vizitat[muchii[coada[i]][j]]=true;
}
}
void citire(){
in >> N >> M >> U;
for(int i=1;i<=M;i++)
{
int x , y ;
in >> x>> y;
if(x!=y)
muchii[x].push_back(y);
}
}
int main(){
initializare();
citire();
BFS();
for(int i =1;i<=N;i++)
out<<sol[i]<<" ";
return 0;
}