码迷,mamicode.com
首页 > Web开发 > 详细

luogu P1546 最短网络 Agri-Net

时间:2019-02-06 14:38:33      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:http   names   weight   ++   using   turn   传送门   std   target   

emmm

题面不想放了

传送门www

一道emmm

很简单的最小生成树问题

没啥思维含量

不知道因为什么zz问题写了4遍www

#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 20010

int fa[maxn],n;
int cnt,ans;

struct EDGE {
    int to,from,weight;
} edge[maxn];

void add(int x,int y,int w) {
    edge[++cnt].to = y;
    edge[cnt].from = x;
    edge[cnt].weight = w;
}

int get(int x) {
    if(fa[x] == x)
        return x;
    return fa[x] = get(fa[x]);
}

int cmp(EDGE x,EDGE y) {
    return x.weight < y.weight;
}

int kruskal() {
    for(int i = 1; i <= n; i++)
        fa[i] = i;
    sort(edge + 1,edge + cnt + 1,cmp);
    for(int i = 1; i <= cnt; i++) {
        int l = get(edge[i].from);
        int r = get(edge[i].to);
        if(l != r) {
            fa[l] = r;
            ans += edge[i].weight;
        }
    }
    return ans;
}

int main() {
    scanf("%d",&n);
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++) {
            int w;
            scanf("%d",&w);
            if(j > i)
            add(i,j,w);
        }
    printf("%d",kruskal());
    return 0;
}

总之,做最小生成树的时候还是要注意细节啊

luogu P1546 最短网络 Agri-Net

标签:http   names   weight   ++   using   turn   传送门   std   target   

原文地址:https://www.cnblogs.com/sevenyuanluo/p/10353638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!