题目

有一个M行N列的点阵,相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。

输入

第一行输入两个正整数m和n。
以下若干行每行四个正整数x1,y1,x2,y2,表示第x1行第y1列的点和第x2行第y2列的点已经有连线。输入保证|x1-x2|+|y1-y2|=1。
2 2
1 1 2 1

输出

输出使得连通所有点还需要的最小花费。
3


题解

并查集(朋友说的,反正老师没讲,自己想),然后就是用lt[(i-1)*n+j]表示第i行第j个点的联通分量。然后连一下没连上的就好了。


代码

#include<cstdio>
using namespace std;
int n,h,k,s,w,x,y,q,lt[1000001],m,x1,y1,x2,y2;
int father(int x)
{return x==lt[x]?x:lt[x]=father(lt[x]);//并查集
}
int main()
{//freopen("s.txt","r",stdin);//测试用scanf("%d%d",&m,&n);for (int i=1;i<=n*m;i++) lt[i]=i;while (scanf("%d%d%d%d",&x1,&y1,&x2,&y2)==4){x=father((x1-1)*n+y1);y=father((x2-1)*n+y2);if (x!=y)//如果不是同一个点{lt[y]=x;//联通两个点}}for (int j=1;j<=n;j++)//竖连for (int i=1;i<m;i++){x=father((i-1)*n+j);y=father(i*n+j);if (x!=y)//如果不是同一个点{lt[y]=x;//联通s+=1;//加}}for (int i=1;i<=m;i++)//横连for (int j=1;j<n;j++){x=father((i-1)*n+j);y=father((i-1)*n+j+1);if (x!=y)//如果不是同一个点{lt[y]=x;//联通s+=2;//加}}printf("%d",s);//输出
}

ssl2348-连接格点【图论,最小生成树,并查集】相关推荐

  1. 图论:并查集求最小环

    图论:并查集求最小环 概念: 图.路.环: 一个有向图由G=(N,A)表示,其中N表示节点集,A表示边集边(i,j)为一有序对,i为出发节点,j为终止节点.在无向图中(i,j)与(j,i)一致. 路是 ...

  2. 图论8 并查集深入解析——边带权并查集和拓展域并查集和最小生成树

    我们先复习一下并查集的基本知识. 并查集的三个操作:查询,初始化,合并:并查集的结构:操作方法以及代码:路径压缩优化(详见<图论7 弗洛伊德&并查集算法详解>). 补充一下,并查集 ...

  3. hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊  就是注意一点 输入边的信息时,角标 ...

  4. ssl1312ZP2502-[HAOI2006]旅行【图论,并查集】

    正题 题目链接: https://www.luogu.org/problemnew/show/P2502 大意 有n个旅游景点,m条路,每条路有个限速,要求求一个点到另一个点的最大速度和最小速度的比最 ...

  5. ssl1222-矩形【图论,并查集】

    正题 大意 有n个正方形,求块数. 解题思路 用并查集求块数 代码 #include<cstdio> #include<algorithm> using namespace s ...

  6. POJ2524——宗教(Ubiquitous Religions)【图论,并查集】

    正题 题目链接: http://poj.org/problem?id=2524 大意 有n个学生,告诉你哪两个学生的宗教相等,求校园里有多少个宗教. 解题思路 并查集链接就好了 代码 #include ...

  7. POJ1611-嫌犯【图论,并查集】

    正题 题目链接: http://poj.org/problem?id=1611 大意 有n个人,m个组,有一个流感嫌犯,流感嫌犯会将所在的组的所有人变成流感嫌犯,求流感嫌犯的数量. 解题思路 并查集将 ...

  8. hdu 1232 畅通工程 最小生成树 并查集

    1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...

  9. 4th 【最小生成树并查集】征兵

    征兵 [题目描述]: 一个国王,他拥有一个国家.最近他因为国库里钱太多了,闲着蛋疼要征集一只部队要保卫国家.他选定了N个女兵和M个男兵,但事实上每征集一个兵他就要花10000RMB,即使国库里钱再多也 ...

  10. P1455-搭配购买【图论,并查集,dp,背包】

    正题 题目链接: https://www.luogu.org/problemnew/show/P1455 大意 有n个商品,给出价值和价格.有m组搭配,如果买了其中一个就得买另一个,给出你拥有的钱,求 ...

最新文章

  1. idea中使用docker插件部署项目
  2. R语言入门学习笔记 - 对R软件的认识
  3. Asp.net正则获取html内容
  4. 关于优酷开发SDK之setOnSeekCompleteListener
  5. 使用Spark/Java读取已开启Kerberos认证的HBase
  6. 关于部署传统的Dynamic Web项目
  7. 找DB2存储过程的package
  8. mysql用户权限表join_MyBatis映射利用mysql left join 解决N+1查询问题
  9. 如何实现开关CD-ROM
  10. django-配置模板的路径-0223
  11. 【gulp】----gulp的使用
  12. Nginx 上传图片500错误 open() /var/lib/nginx/tmp/
  13. 信息系统项目管理收尾
  14. Username is not in the sudoers file. This incident will be reported
  15. JAVA中super和this关键字的区别
  16. C/C++[codeup 1967]数组逆置
  17. 技术书籍也香艳-时隔12年《Head First设计模式》第二版要来了
  18. ncbi下载数据sra和转换fastq流程
  19. 加油站的汽油是按什么分类的
  20. 【BDWP不限速小妙招】真测有效

热门文章

  1. ecshop goods.php,重命名ecshop的商品页goods.php为shangpin.php
  2. java如何运行一个任务_如何每天从Java运行任务?
  3. handler原子锁_Linux的原子操作与同步机制
  4. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
  5. xencenter vgpu 看不见_有一种设计是“看不见,但感受得到”
  6. 磁带最优存储问题java实现_磁带的最优存储问题(贪心选择)
  7. leedcode344. 反转字符串
  8. C++中字符串的截取 str.substr(a,b);
  9. java while do循环_c语言中,while 和 do while 循环的主要区别是( )
  10. oracle导出BOM文件,ORACLE ERP导数据(BOM清单)-备份恢复-Oracle频道-中国IT实验室