hiahia_hia1 2023-03-22 13:43 采纳率: 30%
浏览 10

在重载结构体里的“小于”关系时报了个错我之前也写过一个重载结构体里的小于号但是这个没报错怎么一回事呢

在重载结构体里的“小于”关系时报了个错

img

img

我之前也写过一个重载结构体里的小于号但是这个没报错

img

怎么一回事呢?

#include <iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct edge {
    int from;
    int to;
    int weight;
    edge(int a, int b, int c) : from(a), to(b), weight(c) {}
    bool operator< ( edge n) const {
        return weight < n.weight;
    }
};
vector<int>fathers;
vector<int>height;
priority_queue<edge, vector<edge>, greater<edge>> q;
int find(int i) {
    if (fathers[i] != i) {
        return find(fathers[i]);
    }
    else {
        return i;
    }
}
void Union(int a, int b) {
    int x = fathers[a];
    int y = fathers[b];
    if (height[x] > height[y]) {
        fathers[y] = x;
    }
    else if (height[x] < height[y]) {
        fathers[x] = y;
    }
    else {
        fathers[x] = y;
        height[x]++;
    }
}
int main() {
    int n;
    while (scanf_s("%d", &n)) {
        if (n == 0) {
            break;
        }
        else {
            for (int i = 0; i < n; i++) {
                fathers[i] = i;
                height[i] = 0;
            }
            for (int i = 0; i < n * (n - 1) / 2; i++) {
                int b, c, d;
                cin >> b >> c >> d;
                q.push(edge(b, c, d));
            }
            int s = 0;
            while (q.size() > 1) {
                if (find(q.top().from) != find(q.top().to)) {
                    Union(q.top().from, q.top().to);
                    s += q.top().weight;
                    q.pop();
                }
                else {
                    q.pop();
                }
            }
            cout << s << endl;
        }
    }
}
// 64 位输出请用 printf("%lld") 

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-03-22 18:47
    关注
    这个警告的意思是,你只重载了<,没有重载>,你要整个一套都重载才行
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日

悬赏问题

  • ¥20 IDEA 下 lombok 不生效,找不到get
  • ¥15 sas无法加载传输模块
  • ¥15 ABAQUS模拟钢管混凝土往复荷载,滞回曲线卸载荷载却比加载荷载大是为什么
  • ¥15 IOS设置了charels得代理,但是显示无互联网连接,无法打开chls.pro/ssl下载证书
  • ¥40 一维度流体仿真软件前端如何开发
  • ¥500 DELPHI环境安卓定位实时发送及回调消息展示
  • ¥15 易视腾is-E5-ngh怎么刷机,求各位们分享一下吧
  • ¥15 Androidstudio的程序,求各位帮帮我
  • ¥15 岩石声发射矩张量反演软件
  • ¥15 用Python完成一个任务