Pagini recente » Cod sursa (job #2916383) | Cod sursa (job #3175113) | Cod sursa (job #110221) | Cod sursa (job #2521162) | Cod sursa (job #829775)
Cod sursa(job #829775)
#include <fstream>
#include <queue>
#include <vector>
#include <cstring>
#define Nmax 100005
using namespace std;
ifstream f("bfs.in"); ofstream g("bfs.out");
int n, m, s;
vector <int> V[Nmax];
queue <int> Q;
bool viz[Nmax];
int nivel[Nmax];
int main()
{ f>>n>>m>>s;
for(int i=1; i<=m; ++i)
{ int x,y;
f>>x>>y; V[x].push_back(y);
}
memset(nivel,-1,sizeof(nivel));
Q.push(s); viz[s]=true; nivel[s]=0;
while(!Q.empty())
{ int a=Q.front(); Q.pop();
for(unsigned int i=0; i<V[a].size(); ++i)
if(!viz[V[a][i]])
{viz[V[a][i]]=true; nivel[V[a][i]]=nivel[a]+1; Q.push(V[a][i]);}
}
for(int i=1; i<=n; ++i) g<<nivel[i]<<' ';
return 0;
}