Вот часть моего кода, который я использую, чтобы найти 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;
}