Pagini recente » Cod sursa (job #3171667) | Cod sursa (job #1048922) | Cod sursa (job #1406259) | Cod sursa (job #697775) | Cod sursa (job #936267)
Cod sursa(job #936267)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
#define Nmax 100001
vector <int> lista[Nmax];
queue <int> Q;
int n,m,vizitat[Nmax],Start;
void bf(int k)
{
for(int i=1;i<=n;i++)
vizitat[i]=-1;
vizitat[k]=0;
Q.push(k);
while (!Q.empty())
{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();}
}
int main()
{
ifstream f("bfs.in");
f>>n;
f>>m;
f>>Start;
for (int i=1;i<=m;i++)
{int x,y;
f>>x;
f>>y;
lista[x].push_back(y);}
f.close();
bf(Start);
ofstream g("bfs.out");
for(int i=1;i<=n;i++)
g<<vizitat[i]<<" ";
g.close();
return 0;
}