Внешний цикл for последнего цикла должен запускаться umap.size()
количество раз, но цикл выполняется только один раз.
Для меня это волшебство. Сначала он дает ожидаемый результат, но, как я комментирую (q.push(b); s.insert(b);
) две строки, присутствующие в последнем цикле, и раскомментирую эти две, после этого при компиляции и запуске кода цикл запускается только один раз.
Пожалуйста, помогите, я застрял на один день!
Я застрял на leetcode, затем попробовал на своем персональном компьютере, но проблема сохраняется. Я запускаю код на g ++ (Ubuntu 7.4.0-1ubuntu1 ~ 18.04.1) 7.4.0.
#include<bits/stdc++.h>
using namespace std;
int main() {
vector<vector<int>> pre = {{1,0},{2,0},{1,2},{3,2},{7,2},{4,3},{5,4},{6,5},{7,6}};
unordered_map <int, vector<int>> umap;
for (auto a : pre) {
umap[a[1]].push_back(a[0]);
}
queue<int> q;
unordered_set <int> s;
unordered_map <int, int> memo;
int i;
for (auto a : umap) {
cout << a.first << " ";
if (a.first >= 0) {
for(auto b : umap[i] ) {
if (!s.count(b)) {
q.push(b);
s.insert(b);
}
}
}
}
return 1;
}
Исключенный вывод 6 5 4 3 0 2 фактический результат 6