• zoj 1586 QS Network


    链接:zoj 1586

    题意:若两个QS之间要想连网。除了它们间网线的费用外。两者都要买适配器,

          求使全部的QS都能连网的最小费用

    分析:这个除了边的权值外。顶点也有权值,因此要想求最小价值。必须算边及顶点的权值和

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int f[1010],n,m;
    struct stu
    {
        int a,b,c;
    }t[500100];
    int cmp(struct stu x,struct stu y)
    {
        return x.c<y.c;
    }
    int find(int x)
    {
        if(x!=f[x])
            f[x]=find(f[x]);
        return f[x];
    }
    int krus()
    {
        int i,k=0,s=0,x,y;
        for(i=1;i<m;i++){
            x=find(t[i].a);
            y=find(t[i].b);
            if(x!=y){
                s+=t[i].c;
                k++;
                if(k==n-1)
                    break;
                f[x]=y;
            }
        }
        return s;
    }
    int main()
    {
        int T,i,j,a[1010],c,s=0;
        scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
            for(i=1;i<=n;i++){
                f[i]=i;
                scanf("%d",&a[i]);
            }
            m=1;
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++){
                    scanf("%d",&c);
                    if(j<i){
                        t[m].a=i;
                        t[m].b=j;
                        t[m++].c=c+a[i]+a[j];        //计算边和顶点的权值和
                    }
                }
            sort(t+1,t+m,cmp);
            s=krus();
            printf("%d
    ",s);
        }
        return 0;
    }




  • 相关阅读:
    c++ 的几种强制转换的讨论
    观察者模式
    epoll实现linux进程通信
    vim 实现 go to definition的功能
    svn 的使用
    makefile文件的技术
    [转]epoll技术
    [转]poll技术
    Linux重定向的理解
    避免僵死进程的方法
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6738374.html
Copyright © 2020-2023  润新知