Pagini recente » Cod sursa (job #2795254) | Cod sursa (job #1509110) | Cod sursa (job #2834097) | Cod sursa (job #518984) | Cod sursa (job #1266036)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream u ("bfs.in");
ofstream w ("bfs.out");
const int nmax=1e5;
int n, m, s, d[nmax+1];
vector <int> v[nmax+1];
void graph_read()
{int i, a, b;
u>>n>>m>>s;
for(i=1; i<=m; i++)
{u>>a>>b;
v[a].push_back(b);
}
}
void init()
{for(int i=0; i<=n+1; i++)
d[i]=-1;
}
void bfs(int s)
{queue <int> q;
int i, z, f;
q.push(s);
d[s]=0;
while(!q.empty())
{f=q.front();
z=v[f].size();
for(i=0; i<z; i++)
{if(d[v[f][i]]==-1)
{q.push(v[f][i]);
d[v[f][i]]=d[f]+1;
}
}
q.pop();
}
}
int main()
{graph_read();
init();
bfs(s);
int i;
for(i=1; i<=n; i++)
w<<d[i]<<" ";
return 0;
}