Векторный индекс вне диапазона MVS2013 - PullRequest
0 голосов
/ 02 декабря 2018

Вот часть моего кода, который я использую, чтобы найти MST графика. Я использую scanf для ввода ребра в структуру и сохранения их в векторе, который имеет объекты ребер.Я не понимаю, почему я получаю «векторную ошибку вне диапазона», так как я инициализировал свой размер вектора.

struct GraphEdge
{
    int x, y, weight;
    void readinput()
    {
        scanf("%d%d%d", &x, &y, &weight);

    }
    bool operator<(const GraphEdge &e) const
    {
        return weight < e.weight;
    }
};

int main()
{
    while (1)
    {
        int n, m;
        int total_weight = 0;
        scanf("%d%d", &n, &m);
        if (!n && !m)
            break;
        int res = 0;
        vector<GraphEdge> edge(m);
        for (int i = 0; i < edge.size(); i++)
        {
            edge[i].readinput();
            cout << edge[i].x << " " << edge[i].y << endl;
            res += edge[i].weight;
            //cout << i << endl;
        }
        sort(edge.begin(), edge.end());
        union_find uf;
        uf.init(n);
        int cnt = 0, mst = 0;
        for (int i = 0; cnt < n - 1 && i < m; i++)
        {
            if (uf.dstunion(edge[i].x, edge[i].y))
            {
                res -= edge[i].weight;
                cnt++;
                mst += edge[i].weight;
            }
        }
        printf("%d\n", res);

    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...