Pagini recente » Cod sursa (job #3161696) | Cod sursa (job #2190874) | Cod sursa (job #1622317) | Cod sursa (job #2472136) | Cod sursa (job #2797794)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
class Graf
{
int nrNoduri;
int nrMuchii;
int start;
vector <int> adj[100];
public:
void citire();
void BFS();
};
void Graf::citire()
{
int first, second;
f>>nrNoduri;
f>>nrMuchii;
f>>start;
for(int i = 0; i < nrMuchii; i++)
{
f>>first>>second;
adj[first].push_back(second);
}
}
void Graf::BFS()
{
queue <int> coada;
coada.push(start);
bool visited[100] = {};
visited[start] = 1;
int cost[100] = {};
cost[start] = 0;
int nod_crt;
while (coada.size())
{
nod_crt = coada.front();
for(int i = 0; i < adj[nod_crt].size(); i++)
{
if(!visited[adj[nod_crt][i]])
{
coada.push(adj[nod_crt][i]);
cost[adj[nod_crt][i]] = cost[nod_crt] + 1;
visited[adj[nod_crt][i]] = 1;
}
}
coada.pop();
}
for(int i = 1; i <= nrNoduri; i++)
{
if(visited[i] == 1)
cout<<cost[i]<<" ";
else
cout<<"-1 ";
}
}
int main()
{
Graf G;
G.citire();
G.BFS();
return 0;
}