Не удалось отладить ошибку, возможно, из-за итератора цикла for с очередью и установленного в CPP - PullRequest
0 голосов
/ 08 октября 2019

Внешний цикл 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

...