题目背景

kkk被Farmer John和他的奶牛贝茜虐的很惨,然后她也想体验下一个Farmer的生活。但她又懒得种地,就选择养鱼。

题目描述

这些鱼都是热带鱼(废话),很娇贵(比kkk娇贵),要经常换水,要不然每当kkk走过来的时候鱼们就会一起使劲拍尾巴导致kkk并不情愿的洗个冷水澡(别问我热带鱼为毛这么机智)。但kkk并不勤快,他只想花费最少的力气以实现换水。

kkk的鱼塘可以分成n*n个独立小池,每两个相邻的小池间都有一个水闸控制水位。开启一个水闸需要花费的力气是这两个相邻的小池的水位之差。已知各个小池的水位,kkk想知道她要给每个小池都换水至少需要多少力气。

输入输出格式

输入格式:

第一行一个整数n

接下来n*n个数表示各个小池的水位

输出格式:

最小力气

输入输出样例

输入样例#1:

3
1 2 3
4 5 6
7 8 9

输出样例#1:

12

说明

1<=n<=100

1<=水位<=100


题目不清楚,水闸同时打开,要不然还得考虑连通器原理

裸的最小生成树

注意数组开多大,因为这个WA好几次,最后只有81分了,导致比赛与第一无缘

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=105;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x;
}
int n,m,a[N][N];
inline int id(int i,int j){return (i-1)*n+j;}
struct edge{int u,v,w;bool operator <(const edge &rhs)const{return w<rhs.w;}
}e[N*(N-1)*2];
int cnt=0;
inline void ins(int u,int v,int w){cnt++;e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;
}
int fa[N*N];
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
long long kruskal(){n*=n;sort(e+1,e+1+cnt);long long ans=0,num=0;for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=cnt;i++){int u=e[i].u,v=e[i].v;int x=find(u),y=find(v);if(x!=y){ans+=e[i].w;fa[x]=y;if(++num==n-1) break;}}return ans;
}
int main(){n=read();m=2*n*(n-1);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){a[i][j]=read();//a[i][j]=i+j;if(j!=1) ins(id(i,j),id(i,j-1),abs(a[i][j]-a[i][j-1]) );if(i!=1) ins(id(i,j),id(i-1,j),abs(a[i][j]-a[i-1][j]) );}cout<<kruskal();//printf("%d %d",m,cnt);
}

转载于:https://www.cnblogs.com/candy99/p/5925237.html

洛谷U4807抽水机[最小生成树]相关推荐

  1. 洛谷 P4208 [JSOI2008]最小生成树计数 矩阵树定理

    题目描述 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的).由于不同的 ...

  2. BZOJ1016 || 洛谷P4208 [JSOI2008]最小生成树计数【矩阵树定理】

    时空限制 1000ms / 128MB 题目描述 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则 ...

  3. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

  4. 最小生成树 洛谷P3366【模板】最小生成树 洛谷P2820 局域网

    嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...

  5. 最小生成树——洛谷并查集、口袋的天空

    最小生成树--并查集 简单模板题-洛谷3367并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作 ...

  6. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  7. 洛谷P1194 买礼物

    洛谷P1194 买礼物 在买了第一次之后,你还要买 n-1次,把所有点都连起来,这样做一个最小生成树 就行了,然后要注意题目中说了如果a[ i ][ j ]==0 则表示两个点是不相连的,赋值 inf ...

  8. 洛谷 P1550 浇水

    洛谷 1550 浇水 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to his N (1 <= N <= ...

  9. 洛谷P4319 变化的道路

    题意:给定图,每条边都有一段存在时间.求每段时间的最小生成树. 解:动态MST什么毒瘤...洛谷上还是蓝题... 线段树分治 + lct维护最小生成树. 对时间开线段树,每条边的存在时间在上面会对应到 ...

最新文章

  1. mytag.class.php,dedetag.class.php文件分析
  2. Sharepoint 2007 用户信息管理总结(2) - 用户信息管理
  3. Design Pattern – Separated Interface Pattern[转]
  4. python csdn博客_利用Python抓取CSDN博客
  5. 爬虫侵入计算机系统,【探讨】利用“爬虫技术”获取数据行为的刑事考量 ——以一起非法获取计算机信息系统数据案为例...
  6. 搭建配置cacti,采集信息监控
  7. MFC日志(2011.4.9)
  8. Python实战从入门到精通第十九讲——自定义字符串的格式化
  9. STL工具书(常用用法总结)
  10. HDU1557 权利指数【状态压缩】
  11. VALSE学习(十):图像去模糊-image deblurring
  12. linux 内核挂起 ping,Linux内核安全详解 ping到死复活方法
  13. 深入理解Java堆内存分配策略(Xmx和Xms)
  14. 微信小程序直播分销商城源码
  15. 单目深度估计综述(updating...)
  16. c++实现查询天气预报
  17. 如何用Python解析JSON数据
  18. 如何做网络投票的刷票外挂(二)
  19. zblog include html页面,zblog模板开发第一课:zblog标签调用大全
  20. php工作态度,工作质量,取决于工作态度

热门文章

  1. 程序员的中场职业规划
  2. react如何通过shouldComponentUpdate来减少重复渲染
  3. Spring框架中的设计模式(五)
  4. Windows下配置NodeJS环境详解
  5. python coroutine_笔记-python-coroutine
  6. html四个标签,基本的 HTML 标签 - 四个实例
  7. python多级字典嵌套_python – 如何拆分字符串并形成多级嵌套字典?
  8. 弱电工程数据中心计算机房内布线
  9. UPS及蓄电池的运行管理、维护操作和常见故障处理
  10. 一套实用的数据中心设计方案