• HDU-5253-链接的管道


    http://acm.hdu.edu.cn/showproblem.php?pid=5253

    #include <iostream>
    #include <bits/stdc++.h>
    #define MAX 1001
    using namespace std;
    int Map[MAX][MAX];
    struct node
    {
        int a,b,c;
    };
    struct node e[MAX*MAX*2+10];
    int n,m;
    int num = 1;
    void add(int i,int j)
    {
        if(i<n)
        {
            e[num].a = (i-1)*m+j;
            e[num].b = i*m+j;
            e[num].c = abs(Map[i][j]-Map[i+1][j]);
            num++;
        }
        if(j<m)
        {
            e[num].a = (i-1)*m+j;
            e[num].b = (i-1)*m+(j+1);
            e[num].c = abs(Map[i][j]-Map[i][j+1]);
            num++;
        }
    }
    bool cmp(node a,node b)
    {
        return a.c<b.c;
    }
    int p[MAX*MAX];
    int find(int x)
    {
        return p[x]==x?x:p[x] = find(p[x]);
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        for(int k=1;k<=T;k++)
        {
    
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    scanf("%d",&Map[i][j]);
                }
            }
            num=1;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    add(i,j);
                }
            }
            sort(e+1,e+num,cmp);
            for(int i=1;i<=n*m;i++)
                p[i] = i;
            int sum = 0;
            int edges = 0;
            for(int i=1;i<num;i++)
            {
                int x = find(e[i].a);
                int y = find(e[i].b);
                if(x!=y)
                {
                    edges++;
                    sum+=e[i].c;
                    p[x] = y;
                }
                if(edges==n*m-1)
                    break;
            }
            printf("Case #%d:
    %d
    ",k,sum);
        }
        return 0;
    }

    个人失误总结:sort排序范围要严格。

    注:转载请注明出处
  • 相关阅读:
    如何检索某个字段在sqlserver中的哪个些存储过程中?很简单的SQL语句。
    如何去掉HTML代码来获取纯文本?
    ajax实现跨域请求
    ajax实现跨域提交
    lab3
    Lab2
    hw2
    Homework1
    Lab1
    CS61B_学习计划和进程
  • 原文地址:https://www.cnblogs.com/1625--H/p/9413978.html
Copyright © 2020-2023  润新知