Pagini recente » Cod sursa (job #2580945) | Cod sursa (job #261321) | Cod sursa (job #412548) | Cod sursa (job #2047175) | Cod sursa (job #2373345)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
int main()
{
std::ifstream fin;
fin.open("bfs.in");
std::ofstream fout;
fout.open("bfs.out");
int verticesCount, arcsCount, startingVertex;
fin>>verticesCount>>arcsCount>>startingVertex;
int arcFrom,arcTo;
std::vector<int> adjList[100001];
std::queue<int> q;
int vis[100001] = {0};
int cost[100001] = {INT_MAX};
for (int i=1; i <= verticesCount; i++)
{
cost[i] = INT_MAX;
}
for(int i=1;i<=arcsCount;i++)
{
fin>>arcFrom>>arcTo;
adjList[arcFrom].push_back(arcTo);
}
q.push(startingVertex);
cost[startingVertex] = 0;
while(!q.empty())
{
int curentVertex = q.front();
q.pop();
vis[curentVertex] = 1;
for (auto const& vertex: adjList[curentVertex])
{
if(!vis[vertex]) q.push(vertex);
if (cost[vertex] > cost[curentVertex] + 1 )
cost[vertex] = cost[curentVertex] + 1;
}
}
/*for (int i=1;i<=verticesCount;i++)
if(cost[i] != INT_MAX) std::cout<< cost[i] << " ";
else std::cout<<"-1 ";
*/
for (int i=1;i<=verticesCount;i++)
if(cost[i] != INT_MAX) fout<< cost[i] << " ";
else fout<<"-1 ";
return 0;
}