Pagini recente » Cod sursa (job #148888) | Cod sursa (job #1510689) | Cod sursa (job #2822741) | Cod sursa (job #1617976) | Cod sursa (job #936265)
Cod sursa(job #936265)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
#define Nmax 100000
vector <int> lista[Nmax];
queue <int> Q;
int n,m,vizitat[Nmax],Start;
void creare(char *g)
{ifstream f(g);
f>>n;
f>>m;
f>>Start;
int i,x,y;
for (i=1;i<=m;i++)
{f>>x;
f>>y;
lista[x].push_back(y);}}
void prelucrare()
{int k=Q.front();
for(unsigned int i=0;i<lista[k].size();++i) if (vizitat[lista[k][i]]==-1) {vizitat[lista[k][i]]=vizitat[k]+1;Q.push(lista[k][i]);}
Q.pop();}
void bf(int k)
{vizitat[k]=0;
Q.push(k);
while (!Q.empty()) prelucrare();}
void init()
{for(int i=1;i<=n;i++)
vizitat[i]=-1;}
int main()
{creare("bfs.in");
init();
bf(Start);
ofstream g("bfs.out");
for(int i=1;i<=n;i++)
g<<vizitat[i]<<" ";
return 0;
}