[HDU - 5253]连接的管道
时间:2019-08-20
本文章向大家介绍[HDU - 5253]连接的管道,主要包括[HDU - 5253]连接的管道使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
克鲁斯卡尔(最小生成树)
#include <stdio.h> #include <math.h> #include <iostream> #include <algorithm> #include <math.h> #include <stdlib.h> #include <string.h> using namespace std; #define maxn 1005 int n, m; int a[maxn][maxn]; int father[maxn * maxn]; struct Edge { int u; int v; int w; }edge[2 * maxn * maxn]; int Find(int x) { return father[x] == x ? x : father[x] = Find(father[x]); } int cmp(Edge a,Edge b) { return a.w < b.w; } int kruscal(int m) { sort(edge + 1, edge + m, cmp); int ans = 0; for(int i = 1; i < m; i++) { int x = Find(edge[i].u); int y = Find(edge[i].v); if(x != y) { father[x] = y; ans += edge[i].w; } } return ans; } int main() { int tcase; scanf("%d", &tcase); int t = 1; while (tcase--) { scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { father[i * m + j] = i * m + j; scanf("%d", &a[i][j]); } } int id = 1; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { int u = i * m + j; if (i > 0) { int v = (i-1) * m + j; edge[id].u = u; edge[id].v = v; edge[id++].w = abs(a[i][j] - a[i-1][j]); } if (j > 0) { int v = i*m+j-1; edge[id].u = u; edge[id].v = v; edge[id++].w = abs(a[i][j] - a[i][j-1]); } } } int ans = kruscal(id); printf("Case #%d:\n%d\n", t++, ans); } }
原文地址:https://www.cnblogs.com/Vikyanite/p/11385597.html
- windows下使用word2vec训练维基百科中文语料全攻略!(二)
- 博客园富强民主文明和谐样式
- windows下使用word2vec训练维基百科中文语料全攻略!(一)
- 洛谷P2660 zzc 种田
- CPP--正码,反码,补码~附整数溢出的探讨
- Pandas常用的数据处理方法
- Pandas-层次化索引
- #100. 矩阵乘法
- Pandas-DataFrame基础知识点总结
- python mongodb爬取58网站
- 洛谷P1143 进制转换
- python爬取链家租房之获取北京所有区的网站分栏地址(第一次写,code太粗犷,欢迎提建议)
- Pandas-Series知识点总结
- Numpy基础知识点汇总
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MQ 系列之 JMSTemplate
- Leetcode 76. 最小覆盖子串 (双指针,map)
- ExpiringMap,一个可以用于缓存的 Map
- Leetcode 121. 买卖股票的最佳时机 (DP,模拟)
- MQ 系列之初识消息中间件
- Leetcode 第23场双周赛C 5361. 圆和矩形是否有重叠 (计算几何 初中数学)
- vue-cli 4 快速构建一个 Vue 项目
- SpringDataJPA 系列之快速入门
- Leetcode 第23场双周赛B 5362. 构造 K 个回文字符串(map,思维)
- Java 水题系列(1)数字金字塔
- Leetcode 836. 矩形重叠
- 详解 Vue 目录及配置文件之 config 目录
- Nginx 搭建静态资源服务
- vue 使用自定义字体
- vue 跨域问题