Pagini recente » Cod sursa (job #202901) | Cod sursa (job #1023731) | Cod sursa (job #243356) | Cod sursa (job #2860945) | Cod sursa (job #1380089)
#include <iostream>
#include <fstream>
#include <vector>
#define INF 1<<30
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector< vector<int> > v(NMAX);
vector<bool> viz(NMAX, false);
vector<int> codita(NMAX);
vector<int> d(NMAX,-1);
void BFS(int x)
{
int i, prim, ultim;
int ca = -1;
//cout<<x<<" ";
d[x]=0;
viz[x]=1;
codita[0]=x; prim=ultim=0;
while(prim<=ultim)
{
x=codita[prim++];
d[x]=ca+1;
for(int i=0; i<v[x].size(); ++i)
{
if(!viz[v[x][i]])
{
//cout<<v[x][i]<<" ";
viz[v[x][i]]= true;
codita[++ultim]=v[x][i];
ca=d[x];
}
}
}
}
int main()
{
int x, y, s;
int n,m;
f>>n>>m>>s;
while(f>>x>>y)
{
v[x].push_back(y);
}
BFS(s);
for(int i=1; i<=n;++i)
g<<d[i]<<" ";
return 0;
}