Pagini recente » Cod sursa (job #2847445) | Cod sursa (job #1475856) | Cod sursa (job #2660468) | Cod sursa (job #1666117) | Cod sursa (job #687506)
Cod sursa(job #687506)
#include <deque>
#include <vector>
#include <fstream>
using namespace std;
int i, n, m, s, start, end;
vector<int> *noduri;
deque<int> q;
int *cost;
void bfs(int start)
{
for(i = 1;i <= n;cost[i++] = -1);
cost[start] = 0;
q.push_back(start);
while(!q.empty())
{
start = q.front();
q.pop_front();
for(i = 0;i < (signed)noduri[start].size();i++)
{
end = noduri[start][i];
if(cost[end] == -1)
{
q.push_back(end);
cost[end] = cost[start] + 1;
}
}
}
}
int main()
{
ifstream fi("bfs.in");
ofstream fo("bfs.out");
fi>>n>>m>>s;
noduri = new vector<int>[n+1];
cost = new int[n+1];
for(i = 0;i < m;i++)
{
fi>>start>>end;
noduri[start].push_back(end);
}
bfs(s);
for(i = 1;i <= n;i++)
fo<<cost[i]<<' ';
}