• HDOJ 1879 继续畅通工程


    依然是:MST, kruskal,并查集,路径压缩;

    在LD下的CB中老是提示segmentation fault,不知什么错误,回到win运行一闪而过而没有输出,查了半天发现查函数有一处错误,继续,仍然无输出,怀疑变量命名错误,更改,仍然无输出,最后发现文件保存的路径和输入文件的路径不一致,怎么样,流水账记得不错吧?

    500MS,看了排行榜上没有0MS的,明白这道题500MS不算浪费时间。

    # include <stdio.h>
    # include <stdlib.h>
    
    typedef struct {
        int u, v;
        int w;
    }Road;
    
    int m, n, p[105];
    Road r[5005];
    
    int kruskal(int n);
    int cmp(const void*x, const void*y){ return (*(Road*)x).w>(*(Road*)y).w ? 1:-1;}
    int find(int x){ return x==p[x] ? x:(p[x]=find(p[x]));} /*错误:p[x]=find(x); */
    
    int main()
    {
        int i, j, x, y;
        int tu, tv, tw, tf;
    
        while (1)
        {
            scanf("%d", &m);
            if (!m) break;
            
            n = m*(m-1)/2;
            
            for (i = 1; i <= m; ++i) p[i] = i;
            for (j = 0, i = 1; i <= n; ++i)
            {
                scanf("%d%d%d%d", &tu, &tv, &tw, &tf);
                if (!tf)   /*只记录没有在修的路*/
                {
                    ++j;
                    r[j].u = tu,
                    r[j].v = tv;
                    r[j].w = tw;
                }
                else    
                {
                    x = find(tu);
                    y = find(tv);
                    if (x != y) p[x] = y;
                }
            }
            printf("%d\n", kruskal(j));
        }
    
        return 0;
    }
    
    int kruskal(int n)
    {
        int i, cost, x, y;
    
        qsort(r+1, n, sizeof(r[0]), cmp);
    
        cost = 0;
        for (i = 1; i <= n; ++i)
        {
            x = find(r[i].u);
            y = find(r[i].v);
            if (x != y)
            {
                cost += r[i].w;
                p[x] = y;
            }
        }
    
        return cost;
    }
  • 相关阅读:
    ABP初始化
    ABP生成错误:必须添加对程序集“netstandard”的引用
    树莓派安装Mysql
    多对多关系的中间表命名
    dapper.net 存储过程
    Rabbitmq发送方消息确认
    Rabbitmq发送消息Message的两种写法
    ThreadLocal原理
    多模块打包为可执行jar问题
    类中属性加载顺序的demo
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2464865.html
Copyright © 2020-2023  润新知