Pagini recente » Cod sursa (job #1563500) | Cod sursa (job #896885) | Cod sursa (job #1272687) | Cod sursa (job #2225783) | Cod sursa (job #2384804)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
vector < int > bfs(int sursa, vector < vector < int > > graf)
{
int curent, dist = 0;
vector < int > D(graf.size(), -1);
queue < int > q;
q.push(sursa);
D[sursa] = 0;
while(!q.empty())
{
curent = q.front();
q.pop();
for(auto vecin : graf[curent])
{
if(D[vecin] > D[curent] + 1 || D[vecin] == -1)
{
D[vecin] = D[curent] + 1;
q.push(vecin);
}
}
}
return D;
}
int main() {
int N, M, S, x, y;
ifstream f ("bfs.in");
ofstream g("bfs.out");
f>>N>>M>>S;
S--;
vector < vector < int > > G(N);
for(int i = 0;i < M;i++)
{
f>>x>>y;
x--;
y--;
G[x].push_back(y);
}
vector <int> rez = bfs(S, G);
for(auto x : rez)
{
g<<x<<" ";
}
return 0;
}