Решаю задачу на BFS. На некоторых тестах неправильный ответ.
Суть задачи:
Вводится N – число вершин, матрица смежности, и потом точки a и b. Найти кратчайший путь от a до b.
Помогите найти ошибку в моем коде:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
typedef int _type;
typedef vector<_type> v_t;
typedef vector<v_t> v2_t;
typedef vector<bool> v_b;
typedef vector<pair<int, int>> v_p;
int n, a, b;
v_b used;
v2_t v;
stack<int> path;
queue<int> q;
void bfs()
{
q.emplace(a);
used[a] = true;
while (!q.empty())
{
int x(q.front());
q.pop();
for (int i(0); i<n; ++i)
{
if (!used[i] && v[x][i])
{
used[i] = true;
q.emplace(i);
path.emplace(i);
if (v[i][b])
return;
}
}
}
}
int main()
{
cin >> n;
v.resize(n, v_t(n));
used.resize(n, false);
for (auto &v1 : v)
for (int &n1 : v1)
cin >> n1;
cin >> a >> b;
--a; --b;
bfs();
if (!path.size())
{
if (!v[a][b])
{
cout << -1;
return 0;
}
}
else
cout << path.size() + 1 << endl;
cout << a + 1 << ' ';
while (!path.empty())
{
cout << path.top() + 1 << ' ';
path.pop();
}
cout << b + 1 << endl;
system("pause");
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вот, исправил некоторые ошибки в Вашем коде, компилируется, выполняется
Не могу понять как реализовать этот метод на с++ Нашел много примеров программ но они полностью не подходят, помогите плизВот пример который...