HDU 5253 连接的管道 —— 并查集
来源:互联网 发布:徐老师淘宝店地址链接 编辑:程序博客网 时间:2024/05/18 20:11
#include <stdio.h>#include <vector>#include <iostream>using namespace std;int a[1005][1005];int node[2000005][2];int parent[1000005];vector<int> ves[105];int abs(int a) { return a > 0 ? a : -a;}void assort(int n, int m) { int st = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { int l = i * m + j; if (i > 0) { ves[abs(a[i][j] - a[i - 1][j])].push_back(st); node[st][0] = l; node[st++][1] = l - m; } if (j > 0) { ves[abs(a[i][j] - a[i][j - 1])].push_back(st); node[st][0] = l; node[st++][1] = l - 1; } } }}int findParent(int n) { if (parent[n] != n) { parent[n] = findParent(parent[n]); } return parent[n];}int solve(int n, int m) { int res = 0, size = n * m; for (int i = 0; i < size; ++i) { parent[i] = i; } for (int i = 0; i < 100; ++i) { for (vector<int>::iterator it = ves[i].begin(); it != ves[i].end(); ++it) { int l = node[*it][0], r = node[*it][1]; parent[l] = findParent(parent[l]); parent[r] = findParent(parent[r]); if (parent[l] != parent[r]) { res += i; } if (parent[l] < parent[r]) { parent[parent[r]] = parent[l]; } else { parent[parent[l]] = parent[r]; } } } return res;}int dowork() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { scanf("%d", &a[i][j]); } } for (int i = 0; i < 100; ++i) { ves[i].clear(); } assort(n, m); return solve(n, m);}int main() { int cas; scanf("%d", &cas); for (int i = 1; i <= cas; ++i) { printf("Case #%d:\n%d\n", i, dowork()); }}
0 0
- HDU 5253 连接的管道 —— 并查集
- 【HDU】5253-连接的管道(并查集)
- HDU ACM 5253 连接的管道->最小生成树(并查集)
- HDU 5253 连接的管道(最小生成树-Kruskal+并查集)
- HDU 5253 连接的管道
- HDU 5253 连接的管道
- hdu 5253 连接的管道
- HDU 5253 连接的管道
- HDU 5253 连接的管道
- 【HDU 5253 连接的管道】
- HDU 5253:连接的管道
- HDU 5253 连接的管道
- HDU 5253-连接的管道
- hdu 1875 序号连接并查集
- 连接的管道-HDU
- 并查集的简单应用——HDU
- hdu 5253 连接的管道(kruskal)
- hdu 5253连接的管道(kruskal)
- 题目1371:最小的K个数
- SVN服务器搭建和使用(三)
- 成 都 开 发 票
- 远程连接阿里云服务器----Linux学习笔记(2)
- 使用DirectSound播放MP3文件
- HDU 5253 连接的管道 —— 并查集
- 杭 州 代 开 发 票
- 解密javascript模块加载器require.js
- 成 都 开 发 票 - 成 都 发 票
- PipedInputStream管道输出流和PipedOutputStream管道输入流
- HDOJ 1066 题解
- HDU ACM 1996 汉诺塔VI
- Android程序如何调用webservice
- 杭 州 代 开 发 票 - 杭 州 发 票