[hiho1160] 攻城略地

题意:给出一个图,每个点有一个权值,破坏这个点需要花费这个点的权值,你的任务是破坏所有的点,若破坏某个点之前它的相邻点已经被破坏,那么它就不需要花费代价,求破坏所有点的最小代价

题解:

带权并查集

破坏一个点后,则这个点所在连通块的所有点就会被破坏,那么每个连通块都破坏其代价最小的点

若破坏的边不足k,则从小到大破坏其他的点

/*
  Attack
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;

const int N = 1000010;

int w[N],fa[N],q[N],v[N];

int gi() {
  int x=0,o=1; char ch=getchar();
  while(ch!=‘-‘ && (ch<‘0‘ || ch>‘9‘)) ch=getchar();
  if(ch==‘-‘) o=-1,ch=getchar();
  while(ch>=‘0‘ && ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar();
  return o*x;
}

int find(int x) {
  return x==fa[x]?x:fa[x]=find(fa[x]);
}

int main() {
  int T=gi(),tot=0;
  while(T--) {
    int n=gi(),m=gi(),k=gi(),cnt=0;
    for(int i=1; i<=n; i++) v[i]=w[i]=gi(),fa[i]=i;
    for(int i=1; i<=m; i++) {
      int x=gi(),y=gi(),xx,yy;
      xx=find(x),yy=find(y);
      if(xx==yy) {k--;continue;}
      if(w[xx]>w[yy]) swap(xx,yy);
      w[yy]=w[xx],fa[yy]=xx;
    }
    ll ans=0;
    for(int i=1; i<=n; i++) {
      if(i==fa[i]) ans+=w[i];
      else q[++cnt]=v[i];
    }
    sort(q+1,q+cnt+1);
    for(int i=1; i<=k; i++) ans+=q[i];
    printf("Case #%d: %lld\n", ++tot,ans);
  }
  return 0;
}
时间: 2024-08-01 15:33:32

[hiho1160] 攻城略地的相关文章

hihoCoder 1160 攻城略地

原图可能有多个连通分量,先DFS找出每个连通分量中最小节点,这些必然是要攻占的城市. 设 n 为节点数, m 为边数, cnt 为初始连通分量数,在剩下的边数不小于 m - (n - cnt) 的时候,图的连通性是不变的,也就是在这之前可以适当策略删边保持结果不变. 当边数小于等于 m - (n - cnt) 时,每删一条边,必然多一个连通分量,我们总可以做到让多出来这个连通分量的最小结点 是所有节点中除去已经选定的那些节点之外的最小节点,所以这时对节点以权值排序从小往大记到删够边数为止. #i

张书乐:BATJ联姻银行:智慧银行会来的更猛烈些吗?

几乎一夜之间,一直有些势成水火的主流互联网金融平台,都分别和四大国有银行牵上了手. 2017年3月28日,阿里巴巴集团.蚂蚁金服集团和中国建设银行签署了三方战略合作协议:6月16日,工商银行牵手京东刘强东进行全面合作,6月20日,百度与农业银行宣布达成战略合作:6月22日,腾讯则下了个"双黄蛋",同一天与中国银行和华夏银行均签战略合作协议-- 至此,互联网(不限于金融)领域俗称的BATJ(百度.阿里.腾讯.京东)与四大国有银行工.农.中.建,均结成了互助对子. 科技金融还是金融科技,这

荣耀的双十一:为冠军而来

前些日子,第三方数据机构发布报告指出华为手机在出货量方面已经赶超小米,之后又有知名自媒体指出,荣耀仅2014年第一年的销量就达到2000万部,而2015年更是只用半年时间就达到2000万部销量.该自媒体指出,华为在2015年的销量将会铁定超越1亿部,而按照目前发展速度来看,未来荣耀或将实现单品牌赶超小米的速度. 这种磅礴而凶猛的发展势头,使得荣耀对双十一也信心满满. 10月30日,荣耀官方微博发布消息,内容和配图均以"为冠军而来"为口号,力图抢夺双十一手机销量冠军的意图可见一斑.除此之

微信支付与支付宝钱包的竞争分析

NO1: 十九世纪七十年代起,“物竞天择,适者生存,优胜劣汰”已逐渐成为现代生物学的口号.而今,不知不觉中,它似乎也成了当代社会学的口号.罗素说:“竞争一直是,甚至从人类起源起就是对大部分激烈活动的剌激物.”所谓“长江后浪推前浪”,在人类资讯的迅速积累之下,如果不能追上时代,自然就要被淘汰了.竞争,已经成了当代社会政治经济发展的重要基础与必然趋势. 从远古时期的以物换物,到后来货币的出现,直到宋朝时第一张纸币“交子”问世,随着经济的不断发展,货币的形式也在不断地变化着. 2003年10月18日,

微信版本更新日志分析

微信,中国在移动端时代最成功的产品.当我们审视微信的成功的时候,很多人说“是因为腾讯用户量大带量”“因为摇一摇功能方便大家约炮” ..... 这些可能是微信成功的因素之一,但一定不是微信成功的主要原因(不然,为什么同样占有腾讯资源的输入法和浏览器都没有成功). 成功从不是某一个点导致的成功,而是厚积薄发的积累,不断的修正,作出的正确的决定比错误的多,以及多方面的历史进程相互的促进,顺应大势,正如一位伟人说过,“一个人的成功既要靠自身的努力也要考虑到历史的进程”. 把微信这么多年来的更新日志整理一

地理信息+,共享经济和万众创新

今天的话题源自一个在我脑子里盘亘了很久的困惑:为什么行业内颠覆性的创新常常来自于行业外的人.马云没有练过摊儿,却创建了世界上最大的网上集市.马斯克(Elon Musk)没有学过造汽车,却生产了世界上最受欢迎的电动汽车特斯拉.卡拉尼克(Travis Kalanick)是个纯粹的宅男码农,但他的Uber彻底颠覆了全世界的出租车行业.Brian Chesky是个学美术的暖男,可Airbnb已经是硅谷最炙手可热的独角兽公司……噢,还有Goooooogle Map,第一次真正意义上改变了大家对地图的认识.

雷军解密小米商业内核

原标题:雷军解密小米商业内核:货真价实+超预期口碑+模式创新每经记者江然 岳琦发自成都?念着“小米加步枪”.“农村包围城市”以及“群众路线”这些时下重新时髦起来的词语,雷军站在人们面前,再一次说起了年少时的梦想:  创办一家世界级伟大公司.就在10月30日,IDC发布的全球智能手机出货量数据显示,第三季度小米以1730万台的出货量,超过联想.华为,成为全球第三.这个成绩似乎让小米离伟大公司更近了一些,连雷军本人也颇感意外,“我以为明年才能进入世界前三.”惊喜之余,雷军有更宏伟的目标.“照这样的增

你好,C++(2)1.3 C++世界版图1.4 如何学好C++

1.3  C++世界版图 C++语言的发展过程,不仅是一个特性不断增加.内容不断丰富的过程,更是一个在应用领域中不断攻城略地的过程.在其30余年的发展过程中,C++在多个应用领域都得到了广泛的应用和发展.无论是在最初的UNIX/Linux操作系统上,还是在Windows操作系统上,甚至是在最近兴起的嵌入式系统上,C++都占有不可取代的一席之地,如图1-3所示. 图1-2 C++世界三分天下 1.3.1  Windows系统下的C++开发 自从盖茨在1985年用C/C++完成了Windows 1.

移动时代的站长生态:困于转型但机会仍在

(文/郝小亮)如同观点之争此起彼伏的学术界一样,在新一轮科技浪潮的席卷之下,科技界也往往陷入针锋相对的争鸣之中.微软和苹果这对老冤家就曾针对"后PC时代"的称谓而唇枪舌战,莫衷一是,尚且不管谁对谁错,由智能终端设备的普及导致的PC产业滑坡已是不争的事实,与此同时,智能终端与移动通信技术的发展也宣布了移动互联网时代的到来. 进入移动互联网时代以来,关于移动互联网较之传统互联网究竟是一种颠覆还是延伸的讨论不绝于耳,在一些行业会议上,嘉宾每每为此争得面红耳赤,其实说来说去都是一回事,只是叫法