• #operator ——“Kruskal算法求最小生成树 中的 operator” ~20.8.17


    这里是找到的资料
    mycomplex operator + (mycomplex &p1,mycomplex &p2) //重定义"+"
    {
    	 mycomplex p;
    	 p.x=p1.x+p2.x;
    	 p.y=p2.y+p1.y;
    	 return p;
     }
    
    int main()
    {
        mycomplex p1(82,p2(81;
        mycomplex p3;
        p3=p1+p2;
        std::cout<<p3<<std::endl;
        return 0;
    }
    
    原题代码
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 200010;
    
    int n, m;
    int p[N];
    
    struct E{
        int a, b, w;
        bool operator < (E const &W) const{//这里
            return w < W.w;
        }
    }e[N];
    
    int find(int x){
        if(p[x] != x) p[x] = find(p[x]);
        return p[x];
    }
    
    int main(){
        cin >> n >> m;
        for(int i = 0; i <  m; i ++){
            int a, b, w;
            cin >> a >> b >> w;
            e[i] = {a, b, w};
        }
        
        sort(e, e + m);
        
        for(int i = 1; i < n; i ++) p[i] = i;
        
        int res = 0, cnt = 0;
        for(int i = 0 ; i < m; i ++){
            int a = e[i].a, b = e[i].b, w = e[i].w;
            
            a = find(a), b = find(b);
            if(a != b){
                p[a] = b;
                res += w;
                cnt ++;
            }
        }
        if(cnt < n - 1) cout << "impossible";
        else cout << res;
        
        return 0;
    }
    
    具体笔记
    bool operator < (E const &W) const{
    //这里 可以写成 bool operator < (const E & W) const{
            return w < W.w;
        }
    /*
    *1 bool operator                是    重定义 < 时返回的类型。
    *2 (E const &W) / (const E & W) 是    E中所有的元素W
    *3 return w < W.w;              是    排序的标准(从小到大)
    */
    

    建议用以下写法

    
    struct E{
        int a, b, w;
    }e[N];
    //像这样将operator放到外面去,好理解…… 
    bool operator < (E &a, E &b){
        return a.w < b.w;
    }
    
    
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 200010;
    
    int n, m;
    int p[N];
    //定义数据结构E,方便对边进行操作
    struct E{
        int a, b, w;
    }e[N];
    
    bool operator < (E &a, E &b){
        return a.w < b.w;
    }
    
    int find(int x){
        if(p[x] != x) p[x] = find(p[x]);
        return p[x];
    }
    
    int main(){
        cin >> n >> m;
        for(int i = 0; i < m; i ++){
            int a, b, w;
            cin >> a >> b >> w;
            e[i] = {a, b, w};
        }
        
        sort(e, e + m);
        
        for(int i = 1; i < n; i ++) p[i] = i;
        
        int res = 0, cnt = 0;
        for(int i = 0; i < m; i ++){
            int a = e[i].a, b = e[i].b, w = e[i].w;
            
            a = find(a), b = find(b);
            if(a != b){
                p[a] = b;;
                res += w;
                cnt ++;
            }
        }
        
        if(cnt < n - 1) cout << "impossible";
        else cout << res;
        
        return 0;
    }
    
  • 相关阅读:
    JQ_浏览器窗口改变触发
    5. 通过PHP反序列化进行远程代码执行
    2. 文件包含(150)
    1. md5 collision(50)
    4.xpath注入详解
    2.HTTP头注入
    1.5 xss漏洞修复
    1.4 DVWA亲测XSS漏洞
    1.如何绕过WAF(Web应用防火墙)
    1.3 xss原理分析与剖析(4)
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026722.html
Copyright © 2020-2023  润新知