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*+];
int n,m;
int num = ;
void add(int i,int j)
{
if(i<n)
{
e[num].a = (i-)*m+j;
e[num].b = i*m+j;
e[num].c = abs(Map[i][j]-Map[i+][j]);
num++;
}
if(j<m)
{
e[num].a = (i-)*m+j;
e[num].b = (i-)*m+(j+);
e[num].c = abs(Map[i][j]-Map[i][j+]);
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=;k<=T;k++)
{ scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
scanf("%d",&Map[i][j]);
}
}
num=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
add(i,j);
}
}
sort(e+,e+num,cmp);
for(int i=;i<=n*m;i++)
p[i] = i;
int sum = ;
int edges = ;
for(int i=;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-)
break;
}
printf("Case #%d:\n%d\n",k,sum);
}
return ;
}

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

HDU-5253-链接的管道的更多相关文章

  1. hdu 5253 连接的管道

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5253 连接的管道 Description 老 Jack 有一片农田,以往几年都是靠天吃饭的.但是今年老 ...

  2. HDU 5253 连接的管道 (最小生成树)

    连接的管道 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. HDU 5253 连接的管道(Kruskal算法求解MST)

    题目: 老 Jack 有一片农田,以往几年都是靠天吃饭的.但是今年老天格外的不开眼,大旱.所以老 Jack 决定用管道将他的所有相邻的农田全部都串联起来,这样他就可以从远处引水过来进行灌溉了.当老 J ...

  4. hdu 5253 连接的管道(kruskal)(2015年百度之星程序设计大赛 - 初赛(2))

    连接的管道 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. Kruskal 2015百度之星初赛2 HDOJ 5253 连接的管道

    题目传送门 /* 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! */ ...

  6. HDU 5253 最小生成树 kruscal

    Description 老 Jack 有一片农田,以往几年都是靠天吃饭的.但是今年老天格外的不开眼,大旱.所以老 Jack 决定用管道将他的所有相邻的农田全部都串联起来,这样他就可以从远处引水过来进行 ...

  7. HDU 5253 最小生成树(kruskal)+ 并查集

    题目链接 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> ...

  8. hdu 5253 最小生成树

    赤裸裸最小生成树,没啥说的,我用kruskal过的 /* * Author : ben */ #include <cstdio> #include <cstdlib> #inc ...

  9. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  10. hdu 4006 The kth great number (优先队列)

    /********************************************************** 题目: The kth great number(HDU 4006) 链接: h ...

随机推荐

  1. (DP)51NOD 1002 数塔取数

    一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上.      5   8 4  3 6 9 7 ...

  2. const 和 constexpr

    在C++中,const 这个关键字用法非常灵活,导致我总会搞不清作用是干啥的.灵活使用const会大大改善程序. const 是C++的一种类型修饰符,是不可改变的不能被更新的. 1.const 修饰 ...

  3. hdu3926 Hand in Hand 同构图

    #include<cstring> #include<cstdio> #include<algorithm> using namespace std; ]; str ...

  4. java hashCode 作用

    hashCode 作用,对象根据hashCode的值分区域存放 /** * hashCode 作用 * * @author Administrator * */ public class Point ...

  5. Jquery | 基础 | 慕课网 | (*选择器)

    原生JS var elements1 = document.getElementsByTagName('*'); JQ var elements2 = $("*"); <!D ...

  6. 洛谷 P3960 列队

    https://www.luogu.org/problemnew/show/P3960 常数超大的treap #pragma GCC optimize("Ofast") #incl ...

  7. set有关的函数的用法(The SetStack Computer UVA - 12096)

    #include<bits/stdc++.h> using namespace std; typedef set<int> Set; map<Set,int> ID ...

  8. DP Codeforces Round #303 (Div. 2) C. Woodcutters

    题目传送门 /* 题意:每棵树给出坐标和高度,可以往左右倒,也可以不倒 问最多能砍到多少棵树 DP:dp[i][0/1/2] 表示到了第i棵树时,它倒左或右或不动能倒多少棵树 分情况讨论,若符合就取最 ...

  9. scau 17967 大师姐唱K的固有结界 分类暴力 + RMQ

    由于能放两次,那么分类, 1.连续使用,(这个直接O(n^2)暴力) 2.分开使用. 分开使用的话,首先暴力枚举,用T时间,能从第1个位置,唱到第几首歌,然后剩下的就是从pos + 1, n这个位置, ...

  10. new几种用法

    在 C# 中,new 关键字可用作运算符.修饰符或约束. new 运算符 用于创建对象和调用构造函数. new 修饰符 用于向基类成员隐藏继承成员. new 约束 用于在泛型声明中约束可能用作类型参数 ...