Description

为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里每座建筑都连上互联网,方便未来随时随地网购农药。
他的农庄很大,有N 座建筑,但地理位置偏僻,网络信号很差。
一座建筑有网,当且仅当满足以下至少一个条件:
1、给中国移动交宽带费,直接连网,花费为A。
2、向另外一座有网的建筑,安装共享网线,花费为B×两者曼哈顿距离。
现在,农夫约已经统计出了所有建筑的坐标。他想知道最少要多少费用才能达到目的。

Input

第一行:三个正整数,代表N、A、B。
接下来N 行:每行两个整数Xi、Yi,第i 行代表第i 座建筑的坐标。

Output

第一行:一个整数,代表答案。


解题思路

显然我们是可以(假想)让所有坐标连在一起(直接连网的可以看做连一条代价为A的边)。 我们可以先暴力连边,然后,从小到大排序。显然(在kruskal中),越在前面的边的边权值越小,也就是说权值小于A的边都是可以先连成一颗子最小生成树。然后我们就可以直接处理直接连网的边,自然是子最小生成树的个数*A,加上ans就是最后的答案
注意范围,在比赛时,我就因为范围的问题WA了


代码

#include<cstdio>
#include<algorithm>
#define rr register
#define file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout)
using namespace std;
struct node{int x,y,z,next;}a[1000001];
int len,n,A,B,f[2001],head[2001],ans,tg,xg[2001],yg[2001];
inline int found(int x){return f[x]==x?f[x]:f[x]=found(f[x]);}
inline int minn(int x,int y){return x<y?x:y;}
inline int abss(int x){return x>=0?x:-x;}
void add(int x,int y,int z){a[++len]=(node){x,y,z,head[x]}; head[x]=len;}
inline bool cmp(node x,node y){return x.z<y.z;}
int main()
{file(pupil); scanf("%d%d%d",&n,&A,&B); for(rr int i=1;i<=n;f[i]=i,i++) scanf("%d %d",&xg[i],&yg[i]); for(rr int i=1;i<=n;i++)for(rr int j=1;j<=n;j++)if (i!=j) add(i,j,(abss(xg[i]-xg[j])+abss(yg[i]-yg[j]))*B);sort(a+1,a+len+1,cmp); for(rr int i=1;i<=len;i++) {int xx=found(a[i].x),yy=found(a[i].y); if (xx!=yy) {f[yy]=xx; if (a[i].z<=A) {ans+=a[i].z; tg++; } else   {printf("%d",ans+A*(n-tg));return 0;}}if (tg==n-1) {printf("%d",ans); return 0; }}
}

[jzoj 5353] 村通网 {kruskal算法}相关推荐

  1. 2018.12.30【NOIP提高组】模拟A组 JZOJ 5353 村通网

    大意 有nnn个城市,现在要让每个城市都有网.对于每个城市,有两种方法开网 花AAA元 连接别的有网的城市,花费B×B\timesB×它们间的曼哈顿距离 思路 最小生成树裸题不解释. 代码 #incl ...

  2. JZOJ 5353. 村通网

    .. 题目: 分析: 代码: 题目: 传送门 分析: 表示最小生成树很可做 代码: #include<iostream> #include<cstdio> #include&l ...

  3. 【深度学习】村通网之——谈谈Tensorflow Eager Execution机制之新特性示例(二)

    文章目录 前言 直接使用operation进行卷积操作 自动计算梯度(导数) 计算所有参数的梯度 计算所有变量的梯度 使用Python程序流程控制模型流程 自动优化 前言 本文是[深度学习]村通网之- ...

  4. 【最小生成树】JZOJ_5353 村通网

    题意 有NNN个村,它们需要联网,联网的方式有两种: 1.直接联网,花费AAA元 2.与另一个村连起来,花费B∗B*B∗它们之间的曼哈顿距离,如果另一个村有网,那么这个村也会有网. 求最小花费. 思路 ...

  5. JZOJ 5353. 【NOIP2017提高A组模拟9.9】村通网

    Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里每座建筑都连上互联网,方便未来随时随地网购农药. 他的农庄很大,有N 座建筑,但地理位置偏僻,网络信 ...

  6. 【JZOJ5353】【NOIP2017提高A组模拟9.9】村通网【最小生成树】

    题目大意: 题目链接:https://jzoj.net/senior/#main/show/5353 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里每座建筑都连上互联网, ...

  7. 8.14-T1村通网(pupil)

    题目大意 要建设一个村庄的网络 有两种操作可选 1.给中国移动交宽带费,直接连网,花费为 A. 2.向另外一座有网的建筑,安装共享网线,花费为 B×两者曼哈顿距离. 题解 显然的最小生成树的题 见一个 ...

  8. 【JZOJ5353】村通网

    description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里每座建筑都连上互联网,方便未来随时随地网购农药. 他的农庄很大,有N 座建筑,但地理位置偏僻,网络信 ...

  9. 【村通网】凭啥说python3.6+字典(dict)是有序的?

    同样的运行下面这段代码 a = {'name':'tom','age':'18','tt':'11','tom':'222'} for i in a.keys():print(i) python 3. ...

最新文章

  1. 报告:美国AI投资占全球56% 中国第二增长最快
  2. 将单词的首字母转换成大写
  3. learnpython有中文版吗_简介 | Learn Python the Hard Way 中文版
  4. 抓rtmp推流地址_如何实现摄像机竖屏直播推流?
  5. Slony-I双机备份
  6. [原创]前端工作了一段时间经验总结,献给做前端的同学
  7. Spring Boot + Activiti 工作流框架搭建
  8. vxworks linux 多线程api,vxWorks操作系统的多线程实现研究
  9. 数据库设计_SQL数据库设计(数据建模)
  10. xamarin.android pullToRefresharp.Android下拉刷新样式、侧滑删除功能
  11. 关于在nodejs上使用es6特性
  12. admixture软件_使用ADMIXTURE进行群体结构分析
  13. 数据结构c语言版第二版(严蔚敏)第一章笔记
  14. js下载activex
  15. 微软python认证难不难_微软MTA认证98-381Python高分必看——100小时Python从0到1完全学习实战...
  16. 走马灯如何实现图片自适应
  17. 02、Verilog例化说明
  18. 用数组输出26个小写字母
  19. 7行代码制作一个超声波测距仪
  20. 软件测试bug不能重现,软件测试第五篇:如何提升bug重现的概率?

热门文章

  1. 京东最爱考的前端面试题,html5移动web开发实战
  2. 每日一题-917. 仅仅反转字母_Python
  3. html移动端语音波纹,html5 +css3 点击后水波纹扩散效果 兼容移动端
  4. 电脑快捷键操作以及常用知识大全
  5. 盛世昊通上市美国纳斯达克,汽车后市场再变亿万级存量市场
  6. 美团点评2020校招笔试练习
  7. huntian oy (数论卷积杜教筛)
  8. 第十三届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)
  9. idea 撤销本地commit 但是未push的代码
  10. 高分辨率扫描出来的图片有摩尔纹_QQ新功能:图片一键转PPT,比OCR更强大的文档重建技术...