输入样例
6 7
3 1 4 1 5 9
1 2 7
1 3 11
2 3 13
3 4 1
3 6 19
4 5 20
5 6 1
输出样例
5

我们需要走遍整张图,故求最小生成树即可,想复杂了。

因为我们需要拿完所有的金币且开局带的金币最少,显然只需要过路费对我们的限制最小,找到过路费最少且能走完所有的城市的路就ok了,用过路费当做两个城市的距离求最小生成树即可。

巧妙点在于如何存需要过路费的最大值,如下

#include<bits/stdc++.h>using namespace std;int city[100005];
int n,m;
int getMoney[100005];
int needMoney[100005];struct road{int x;int y;int need;}Roads[100005];bool cmp( road a , road b ){return a.need<b.need;
}int getF( int a ){return a==city[a]?a:city[a]=getF(city[a]); //并查集并且进行路径压缩。
}int main(){cin>>n>>m;//n个城市,m条路for ( int k = 1 ; k <= n ; ++k ){ scanf("%d",&getMoney[k]);city[k] = k;    //进过第N个城市获得的金币数,初始化并查集 }for ( int k = 0 ; k < m ; ++k )       scanf("%d%d%d",&Roads[k].x,&Roads[k].y,&Roads[k].need);   //输入所有路;sort( Roads , Roads + m , cmp ); for ( int k = 0 ; k < m ; ++k ){int x = getF( Roads[k].x );int y = getF( Roads[k].y );if ( x == y ) continue;  //成环needMoney[x] = max( needMoney[x]  , Roads[k].need - getMoney[x] );needMoney[y] = max( needMoney[y]  , Roads[k].need - getMoney[y] );if ( needMoney[x] > needMoney[y] )swap( x , y );//如果从x走到y比y走到x需要初始金额更多,那么选择小的一个//故我们交换xy,这时从x->y需要的金额较少 getMoney[x] += getMoney[y];//此时你走到x会获得的金币会累加,同时你need的Money也存入了x city[y] = x; //连接两条路//注.这句话与 city[x] = y 不等价//因为你能获取的钱累加到了x上,但事实上你在x与y两点获取的钱是一样的,所以我们用city[y]=x指向//如果用 city[x] = y的话,那么你想取在y出得到的最多的钱也就变成了 needMoney[ getF( y ) ] = needMoney[y] != needMoney[x];   }cout<<needMoney[ getF(1) ]<<endl;//最终整个图被连成了一个树,所以getF(x) x可以为 1-n的任何数 }

CQUPT第十三届ACM网赛 H. 活动图 题解相关推荐

  1. CQUPT第十三届ACM网赛 C 高次OSU题解

    输入样例: 3 3 0.5 0.5 0.5 输出样例: 6.0 (保留一位小数) 代码: #include<bits/stdc++.h>using namespace std;double ...

  2. CQUPT第十三届ACM网赛 J. 才华横溢 题解

    样例输入: 2 2 2 2 4 5 2 3 5 样例输出: 2 5 一丶引入GCD GDC,即最大公约数.便捷求法如下. int GCD(int a,int b){return !a?b:GCD( b ...

  3. 记第七届ACM校赛-回忆

    这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...

  4. 第十三届NENUACM校赛正式赛总结

    目录 A B C D E F G H I 这次比赛主要是心态稳定,一直坚持不懈地想把题A掉,运气好就好在有很多思维题,我出的题没有用到高级点的算法. 一个点在于自己潜心研究了一点组合数学,其实并没有比 ...

  5. 2016山东省第七届ACM省赛总结

    好久都没更过了 前段时间真是心态不好 状态也不好 都不打算练了 自己堕落了一阵子 醒悟了 感觉还是应该干些正事 加上去北京旅游(lanqiao)待了几天 心情也好多了 啊 自己太水 还要接着干. 好 ...

  6. j-甜甜圈(第十三届icpc河南省赛)

    照常,上题目:J-甜甜圈_河南省第十三届ICPC大学生程序设计竞赛(重现赛) (nowcoder.com) 这种题,就一眼能看出来直接模拟肯定是不行的了 然后比赛的时候三个人就思考了下人生决定跳过 咳 ...

  7. 湖南大学第十四届ACM程序设计大赛 H Kuangyeye and hamburgers

    链接:https://ac.nowcoder.com/acm/contest/338/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. 2016第七届ACM山东省赛

     "题目说的是输出编号.输出编号!!" "好,改好了." "交." 最后两分钟再一次提交了代码. no  -  wrong. 奋战到最后一秒 ...

  9. 第十三届蓝桥杯大赛JavaB个人赛题题解

    最近蓝桥杯出结果了,本人有幸拿到省赛一等奖前列,现在趁着五一有空,发一发个人题解,因为我们学校是线下竞赛,所以代码都在学校的比赛机,只能再根据记忆打一打,不容易,大家要是觉得有帮助就点个赞,哈哈,祝大 ...

最新文章

  1. STM32开发 -- 蓝牙开发详解(2)
  2. mysql 亿级_mysql 亿级数据量 ( sum ,group by )的优化
  3. Python 3.X 要使用urllib.request 来抓取网络资源。转
  4. 梯度 cv2.sobel_TensorFlow 2.0中连续策略梯度的最小工作示例
  5. Python之数据加密与解密(hashlib、hmac、random、base64、pycrypto)--转载
  6. java怎么处理ajax请求,java怎么用ajax请求?jquery ajax请求后台的简单例子
  7. Bootstrap CSS 编码规范之Class 命名规范
  8. HDFS伪分布式集群搭建
  9. 1.2 SQL注入原理-手工联合查询
  10. mysql读写分离_SpringBoot+MyBatis+MySQL读写分离
  11. 第一课:OD软件界面基本介绍
  12. Java常见练习题总结
  13. Python 中模拟键盘输入
  14. Unity 脚本中的几种等待方法
  15. MCAL_VADC配置
  16. 知名IT企业待遇一览表
  17. shell命令查阅端口信息_Linux服务器管理Shell经典命令
  18. mantis系列:Linux系统mantis(bug管理系统)的安装搭建配置
  19. Java Solr:(一)Solr 简介
  20. 步进电机步距角精度是什么?

热门文章

  1. 泛型编程与模板元编程介绍(概念、优点)
  2. Shopify独立站引流方法汇总
  3. RedHat Linux口令恢复任我行
  4. 稀疏向量计算技术杂谈
  5. 【人工智能】深度学习思维导图、人工智能思维导图、深度学习综述
  6. 客户关系管理软件是什么?企业为什么需要客户关系管理软件?
  7. 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图
  8. 激光测距误差对激光脚点定位的影响
  9. html5直播视频模板,HTML5 VideoAPI,打造自己的Web视频播放器
  10. 傅立叶变换c语言实现