ssl2348-连接格点【图论,最小生成树,并查集】
题目
有一个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-连接格点【图论,最小生成树,并查集】相关推荐
- 图论:并查集求最小环
图论:并查集求最小环 概念: 图.路.环: 一个有向图由G=(N,A)表示,其中N表示节点集,A表示边集边(i,j)为一有序对,i为出发节点,j为终止节点.在无向图中(i,j)与(j,i)一致. 路是 ...
- 图论8 并查集深入解析——边带权并查集和拓展域并查集和最小生成树
我们先复习一下并查集的基本知识. 并查集的三个操作:查询,初始化,合并:并查集的结构:操作方法以及代码:路径压缩优化(详见<图论7 弗洛伊德&并查集算法详解>). 补充一下,并查集 ...
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊 就是注意一点 输入边的信息时,角标 ...
- ssl1312ZP2502-[HAOI2006]旅行【图论,并查集】
正题 题目链接: https://www.luogu.org/problemnew/show/P2502 大意 有n个旅游景点,m条路,每条路有个限速,要求求一个点到另一个点的最大速度和最小速度的比最 ...
- ssl1222-矩形【图论,并查集】
正题 大意 有n个正方形,求块数. 解题思路 用并查集求块数 代码 #include<cstdio> #include<algorithm> using namespace s ...
- POJ2524——宗教(Ubiquitous Religions)【图论,并查集】
正题 题目链接: http://poj.org/problem?id=2524 大意 有n个学生,告诉你哪两个学生的宗教相等,求校园里有多少个宗教. 解题思路 并查集链接就好了 代码 #include ...
- POJ1611-嫌犯【图论,并查集】
正题 题目链接: http://poj.org/problem?id=1611 大意 有n个人,m个组,有一个流感嫌犯,流感嫌犯会将所在的组的所有人变成流感嫌犯,求流感嫌犯的数量. 解题思路 并查集将 ...
- hdu 1232 畅通工程 最小生成树 并查集
1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...
- 4th 【最小生成树并查集】征兵
征兵 [题目描述]: 一个国王,他拥有一个国家.最近他因为国库里钱太多了,闲着蛋疼要征集一只部队要保卫国家.他选定了N个女兵和M个男兵,但事实上每征集一个兵他就要花10000RMB,即使国库里钱再多也 ...
- P1455-搭配购买【图论,并查集,dp,背包】
正题 题目链接: https://www.luogu.org/problemnew/show/P1455 大意 有n个商品,给出价值和价格.有m组搭配,如果买了其中一个就得买另一个,给出你拥有的钱,求 ...
最新文章
- idea中使用docker插件部署项目
- R语言入门学习笔记 - 对R软件的认识
- Asp.net正则获取html内容
- 关于优酷开发SDK之setOnSeekCompleteListener
- 使用Spark/Java读取已开启Kerberos认证的HBase
- 关于部署传统的Dynamic Web项目
- 找DB2存储过程的package
- mysql用户权限表join_MyBatis映射利用mysql left join 解决N+1查询问题
- 如何实现开关CD-ROM
- django-配置模板的路径-0223
- 【gulp】----gulp的使用
- Nginx 上传图片500错误 open() /var/lib/nginx/tmp/
- 信息系统项目管理收尾
- Username is not in the sudoers file. This incident will be reported
- JAVA中super和this关键字的区别
- C/C++[codeup 1967]数组逆置
- 技术书籍也香艳-时隔12年《Head First设计模式》第二版要来了
- ncbi下载数据sra和转换fastq流程
- 加油站的汽油是按什么分类的
- 【BDWP不限速小妙招】真测有效
热门文章
- ecshop goods.php,重命名ecshop的商品页goods.php为shangpin.php
- java如何运行一个任务_如何每天从Java运行任务?
- handler原子锁_Linux的原子操作与同步机制
- matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
- xencenter vgpu 看不见_有一种设计是“看不见,但感受得到”
- 磁带最优存储问题java实现_磁带的最优存储问题(贪心选择)
- leedcode344. 反转字符串
- C++中字符串的截取 str.substr(a,b);
- java while do循环_c语言中,while 和 do while 循环的主要区别是( )
- oracle导出BOM文件,ORACLE ERP导数据(BOM清单)-备份恢复-Oracle频道-中国IT实验室