博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod——1640 天气晴朗的魔法 有边权限制的最大生成树
阅读量:6574 次
发布时间:2019-06-24

本文共 1033 字,大约阅读时间需要 3 分钟。

  好好读题嗷:“所以我们要求阵中的魔法链的魔力值最大值尽可能的小,与此同时,魔力值之和要尽可能的大。”

  第一条件是生成树的最大边权更小,第二条件是在最大边权的限制下搞一个最大生成树。

  至于最大生成树,如果用prime就把边权全都置负,如果用kruskal就把边权降序排列,生成的时候加一个小判断。

  

1 #include 
2 using namespace std; 3 #define maxn 200050 4 struct edge { int u, v, cost; } es[maxn];//连接顶点u和v的边,权值为cost 5 bool cmp1(edge e1, edge e2){ 6 return e1.cost < e2.cost; 7 } 8 bool cmp2(edge e1, edge e2){ 9 return e1.cost > e2.cost;10 }11 int V,E;//顶点数和边数12 13 //并查集部分14 int par[maxn];15 int find(int a){16 return a==par[a]?a:(par[a]=find(par[a]));17 }18 void unite(int a,int b){19 par[find(b)]=find(a);20 }21 22 int kruskal1(){
//返回最小生成树的最大边权23 sort(es,es+E,cmp1);24 int res=0;25 for(int i=0;i
>V>>E;50 for(int i=0;i<=V;i++) par[i]=i;51 for(int i=0;i
>es[i].u>>es[i].v>>es[i].cost;53 int k=kruskal1();54 55 for(int i=0;i<=V;i++) par[i]=i;56 long long ans=kruskal2(k);57 cout<
<

 

转载于:https://www.cnblogs.com/noobimp/p/10946823.html

你可能感兴趣的文章
【机器学习】--关联规则算法从初识到应用
查看>>
MOTO XT702添加开机音乐
查看>>
Python脚本日志系统
查看>>
B0BO TFS 安装指南(转载)
查看>>
gulp常用命令
查看>>
TCP(Socket基础编程)
查看>>
RowSet的使用
查看>>
每日一记--cookie
查看>>
WPF and Silverlight 学习笔记(十二):WPF Panel内容模型、Decorator内容模型及其他...
查看>>
FLUSH TABLES WITH READ LOCK 和 LOCK TABLES比较
查看>>
MySQL:创建、修改和删除表
查看>>
Java多线程程序设计详细解析
查看>>
IOS 7 Study - UISegmentedControl
查看>>
八、通用类型系统
查看>>
JQuery的ajaxFileUpload的使用
查看>>
Java分享笔记:使用keySet方法获取Map集合中的元素
查看>>
Java面向对象练习题之人员信息
查看>>
关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...
查看>>
ios 控制器的生命周期
查看>>
C#动态代理
查看>>