Pagini recente » Cod sursa (job #1673937) | Cod sursa (job #1218787) | Cod sursa (job #3318440) | Cod sursa (job #2848821) | Cod sursa (job #3318527)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
// BFS
// BFS(s)
// s[1] = infinit;
// s[start] = 0
// q.push(start)
// while !Q.empty()
// nod = Q.front()
//
int d[100001]; // distanta
vector<int> l[100001]; // lista muchii
queue<int> q;
int n, m;
void bfs(int start) {
for (int i = 1; i <= n; i++)
d[i] = -1;
d[start] = 0;
q.push(start);
while (!q.empty()) {
int nod = q.front();
q.pop();
for (auto vecin : l[nod]) {
if (d[vecin] == -1) {
d[vecin] = d[nod] + 1;
q.push(vecin);
}
}
}
for (int i = 1; i <= n; i++)
fout << d[i] << " ";
}
int main() {
int x, y, s;
fin >> n >> m >> s;
for (int i = 1; i <= m; i++)
{
fin >> x >> y;
l[x].push_back(y); // graf orientat
}
//cout << n << m << s;
bfs(s);
}
// parcurgerile in grafuri --> DFS si BFS
// componente tare conexe
// parcurgerea DFS
//
// DFS(nod)
// vizitat[nod] = 1
// iteram prin toti vecinii nodului si ii marcam vizitat
// for vecin in L[nod] (lista de adiacenta)
// if vizitat[vecin] == 0
// DFS(vecin)
//
// pt a descoperii nr comp conexe
// for (i = 1; i <= n; i++)
// if (vizitat[nod] == 0)
// DFS(nod);
// nrCompConexe++;
//
//
//
//int vizitat[100001];
//vector<int> L[100001];
//
//
//void dfs(int nod) {
// vizitat[nod] = 1;
// for (int vecin : L[nod]) {
// if (vizitat[vecin] == 0)
// dfs(vecin);
// }
//}
//
//int main()
//{
// int n, m, x, y, nrCompConex = 0;
// fin >> n >> m;
// for (int i = 1; i <= m; i++) {
// fin >> x >> y;
// L[x].push_back(y);
// L[y].push_back(x);
// }
//
//
// /*for (int i = 1; i <= n; i++)
// {
// cout << "nodul " << i << " are vecinii: ";
// for (int j = 0; j < L[i].size(); j++)
// cout << L[i][j] << " ";
// cout << "\n";
// }*/
//
// for (int i = 1; i <= n; i++)
// if (vizitat[i] == 0) {
// dfs(i);
// nrCompConex++;
// }
//
// fout << nrCompConex << '\n';
// return 0;
//}
//