Pagini recente » Cod sursa (job #1820982) | Cod sursa (job #456193) | Cod sursa (job #467775) | Cod sursa (job #2750783) | Cod sursa (job #2304182)
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
#define maxN 100010
ifstream f ("bfs.in");
ofstream g ("bfs.out");
vector<int>A[maxN];
queue<int>coada;
int viz[maxN] , Grad[maxN] , cost[maxN];
int varf , arce, x , y , rad;
void parcurgereBFS(int start)
{
for (int i = 1; i <= varf; i++)
{
viz[i] = -1;
cost[i] = 0;
}
viz[start] = 0;
coada.push(start);
while (!coada.empty())
{
vector<int>::iterator it = A[start].begin();
for (; it != A[start].end(); it++)
{
if (viz[*it] == -1)
{
coada.push(*it);
viz[*it] = 0;
cost[*it] = cost[coada.front()] + 1;
}
}
coada.pop();
start = coada.front();
}
for (int i = 1; i <= varf; i++)
{
if (viz[i] == -1)
cost[i] = -1;
g << cost[i] << ' ';
}
g << endl;
}
int main ()
{
f >> varf >> arce >> rad;
for (int i = 1; i <= arce; i++)
{
f >> x >> y;
A[x].push_back(y);
}
parcurgereBFS(rad);
g.close ();
return 0;
}