PAT T1013 Image Segmentation
krustral算法加并查集,按题给要求维护并查集~
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int inf=1e9;
int N,M,x,y;
int c,w;
struct edge {
int u;
int v;
int w;
}Edge[maxn*];
int mst[maxn];
int num[maxn];
int father[maxn];
bool cmp (edge a,edge b) {
return a.w<b.w;
}
int findfather (int x) {
int a=x;
while (x!=father[x]) x=father[x];
while (a!=father[a]) {
int z=a;
a=father[a];
father[z]=x;
}
return x;
}
vector<int> g[maxn];
int main () {
scanf ("%d %d %d",&N,&M,&c);
for (int i=;i<N;i++) father[i]=i,num[i]=;
for (int i=;i<M;i++) {
scanf ("%d %d %d",&Edge[i].u,&Edge[i].v,&Edge[i].w);
}
sort (Edge,Edge+M,cmp);
for (int i=;i<M;i++) {
int u=Edge[i].u;
int v=Edge[i].v;
int faU=findfather(u);
int faV=findfather(v);
if (faU==faV) continue;
if ((Edge[i].w<=mst[faU]+c/num[faU])&&(Edge[i].w<=mst[faV]+c/num[faV])) {
if (faU<faV) swap (faU,faV);
father[faU]=faV;
if (Edge[i].w>mst[faV]) mst[faV]=Edge[i].w;
num[faV]+=num[faU];
}
}
for (int i=;i<N;i++)
g[findfather(i)].push_back(i);
for (int i=;i<N;i++) {
if (g[i].size()==) continue;
sort (g[i].begin(),g[i].end());
for (int j=;j<g[i].size();j++) {
if (j!=) printf (" ");
printf ("%d",g[i][j]);
}
printf ("\n");
}
return ;
}
PAT T1013 Image Segmentation的更多相关文章
- PAT甲级—暴力搜索
1091 Acute Stroke (30point(s)) 基础的搜索,但是直接用递归会导致段错误,改用队列之后就不会了,这说明递归调用在空间利用率上还是很吃亏的. #include <cst ...
- 《转载》PAT 习题
博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...
- Caffe Python MemoryDataLayer Segmentation Fault
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ 因为利用Pyhon来做数据的预处理比较方便,因此在data_l ...
- php php-5.6.4.tar.bz2 apache 兼容问题 child pid 27858 exit signal Segmentation fault
环境 [root envirotar]# uname -a Linux i2..el6.x86_64 # SMP Thu Jul :: UTC x86_64 x86_64 x86_64 GNU/Lin ...
- PAT Judge
原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...
- PAT/字符串处理习题集(二)
B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...
- Segmentation fault (core dumped)
问题: 在Linux中实现快速排序时,没有加入终止条件,结果出现Segmentation fault (core dumped)这个问题,Segmentation fault (core dumped ...
- centos yum Segmentation fault 问题解决办法
今儿在centos 使用yum 安装软件时出现了 ”Segmentation fault“ 错误提示,google一大把执行 yum clean all 命令后,再执行还是没用,最后把 zlib.x. ...
- PAT 1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
随机推荐
- 09day vi命令详解
vi有三种模式(互相切换) 1. 命令模式 2. 插入模式(编辑模式) 3. 低行模式 三种模式的切换方法: 使用技巧 vi 文件信息 i --- 进入编辑模式 esc --- 退出编辑模式 :wq ...
- 优酷1080p的kux格式文件怎么转换为MP4格式?
直接使用优酷自己的FFMPEG解码! 格式为:"优酷ffmpeg.exe的安装地址" -y -i ".kux文件储存地址" -c:v copy -c:a cop ...
- 【C语言】找出1000以内可以被3整除的数
分别用while,do-while,for语句实现 方法一:while #include<stdio.h> int main() { int m; m = ; ) { == ) print ...
- 使用Canvas画布的注意事项
1.开始一个路径时要使用beiginPath()方法 ,不然会发生意想不到的事件. 2.图片加载完成后才能按照顺序依次绘图 (巧用onload时间)
- HL7解析器
最近做了关于医疗的项目,用了HL7协议,以下是解析的代码: HL7解析器: using System; using System.Text; using System.Xml; using Syste ...
- [vue学习] 卡片展示分行功能简单实现
如图所示,实现简单的卡片展示分行功能. 分行功能较多地用于展示商品.相册等,本人在学习的过程中也是常常需要用到这个功能:虽然说现在有很多插件都能实现这个功能,但是自己写出来,能够理解原理,相信能够进步 ...
- itest(爱测试) 4.3.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
itest 简介:查看简介 test 开源敏捷测试管理,testOps 践行者.可按测试包分配测试用例执行,也可建测试迭代(含任务,测试包,BUG)来组织测试工作,也有测试环境管理,还有很常用的测试度 ...
- acm数论之旅(转载) -- 逆元
ACM数论之旅6---数论倒数,又称逆元(我整个人都倒了( ̄﹏ ̄)) 数论倒数,又称逆元(因为我说习惯逆元了,下面我都说逆元) 数论中的倒数是有特别的意义滴 你以为a的倒数在数论中还是1/a吗 ( ...
- type和object详解
python中的type和object详解 关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<t ...
- GCD: 求两数最大公因数算法【欧几里得法】原理的个人理解 (80%图片讲解!)
那么,求 a,b 的最大公因数就是求最大的,能均分a,b的块!