Pagini recente » Cod sursa (job #369340) | Cod sursa (job #172810) | Cod sursa (job #10274) | Cod sursa (job #1343698) | Cod sursa (job #628832)
Cod sursa(job #628832)
#include<fstream>
#include<vector>
using namespace std;
vector<int> vmic[100001];
int v[100001], nivel[100001], top, n, m, s;
bool viz[100001];
void BFS()
{
int i, pr = 0, nrm = 0, x, start = s;
v[nrm] = start;
viz[s] = true;
while (pr <= nrm){
start = v[pr++];
for (i=0; i<vmic[start].size(); i++)
{
x = vmic[start][i];
if (!viz[x]){
v[++nrm] = x;
viz[x] = true;
nivel[x] = nivel[start] + 1;
}
}
}
for (i=1; i<=n; i++)
if ((i!=s)&&(nivel[i]==0))
nivel[i] = -1;
}
int main()
{
int i, a, b;
ifstream f("bfs.in");
ofstream h("bfs.out");
f>>n>>m>>s;
for (i=1; i<=m; i++)
{
f>>a>>b;
vmic[a].push_back(b);
}
BFS();
for (i=1; i<=n; i++)
h<<nivel[i]<<" ";
f.close();
h.close();
return 0;
}