Pagini recente » Cod sursa (job #834326) | Cod sursa (job #611113) | Cod sursa (job #902838) | Cod sursa (job #1662580) | Cod sursa (job #2373315)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
#include <cstdio>
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] = {0};
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 ";*/
FILE *g = fopen("bfs.out", "w");
for (int i=1;i<=verticesCount;i++)
if(cost[i] != INT_MAX) fprintf(g, "%d ", cost[i]);
else fprintf(g, "-1");
return 0;
}