Пожалуйста, помогите мне, что я делаю не так?
c++
#include "pch.h"
#include <iostream>
#include <cstring>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
#define MAXV 110
#define INF 2000000000
using namespace std;
struct Edge
{
int u, v, dist;
Edge(int u = 0, int v = 0, int dist = 0) : u(u), v(v), dist(dist) {}
};
int dsu_get(int v)
{
int *p = new int[MAXV];
return (v == p[v]) ? v : (p[v] = dsu_get(p[v]));
}
void dsu_unite(int a, int b)
{
int *p = new int[MAXV];
a = dsu_get(a);
b = dsu_get(b);
if (rand() & 1)
swap(a, b);
if (a != b)
p[a] = b;
}
int main()
{
vector <Edge> e;
vector <int> mstedges;
int mas[MAXV], size[MAXV];
int n, m;
cin >> n;
cin >> m;
for (int i = 1; i <= n; i++)
{
mas[i] = i;
size[i] = 1;
}
e.clear();
mstedges.clear();
Edge temp;
for (int i = 0; i < m; i++)
{
cin >> temp.u >> temp.v >> temp.dist;
e.push_back(temp);
}
int lt = temp.dist;
sort(e.begin(), e.end(), lt);
int MST1 = 0;
for (int i = 0; i < m; i++)
{
if (dsu_get(e[i].u) != dsu_get(e[i].v))
{
dsu_unite(e[i].u, e[i].v);
MST1 += e[i].dist;
mstedges.push_back(i);
}
}
int MST2 = INF;
int len;
int cnt;
for (int i = 0; i < mstedges.size(); i++)
{
len = 0;
cnt = 1;
for (int j = 1; j <= n; j++)
{
mas[j] = j, size[j] = 1;
}
for (int j = 0; j < m; j++)
{
if (j == mstedges[i])
continue;
if (dsu_get(e[j].u) != dsu_get(e[j].v))
{
dsu_unite(e[j].u, e[j].v);
len += e[j].dist;
cnt++;
}
if ((cnt == n) && (len < MST2))
MST2 = len;
}
}
cout << MST1 << " " << MST2 << endl;
}
Добавьте после объявления struct Edge
такой код:
bool operator<(const Edge&e1, const Edge&e2) {
return e1.dist < e2.dist;
}
и сортировка по длине заработает.
Вообще-то в sort
нужно передавать третьим аргументом - если передавать - функтор. Вы передаете int
. Понятно, что компилятор не понимает, как превратить int
в вызов функции...
Чего вы хотели добиться, передавая в алгоритм сортировки это целочисленное значение?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Что будет производительней в общем случае: вектор пар или 2 вектора, где каждый содержит свой элемент?
Есть такое код функция hexDump выводит в порт сообщенияКак лучше сделать чтобы результат ее действия возвращался единой строкой
я имею блок с классом "preview_main_button" ( <div class="preview_main_button" id="ButtonOnPreview">Перейти ко всем статьям</div> ), но я хочу, чтобы на экранах разрешение...