博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ 2654】tree
阅读量:6242 次
发布时间:2019-06-22

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

Description

  给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。

  题目保证有解。

 

Input

  第一行V,E,need分别表示点数,边数和需要的白色边数。

  接下来E行
  每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色1黑色)。

 

Output

  一行表示所求生成树的边权和。

 

Sample Input

2 2 1
0 1 1 1
0 1 2 0

Sample Output

2

HINT

 

数据规模和约定

  0:V<=10
  1,2,3:V<=15
  0,..,19:V<=50000,E<=100000
  所有数据边权为[1,100]中的正整数。

orz 王梦迪大神
1 #include
2 #include
3 using namespace std; 4 const int N=50010; 5 struct ee{
int x,y,w,c;}e[N*2]; 6 int fa[N]; 7 int ans,E,V,need,tot; 8 int root(int x){ 9 if(fa[x]==x) return x;10 fa[x]=root(fa[x]);return fa[x];11 }12 13 bool cmp(ee a,ee b){14 if(a.w==b.w) return a.c
>1;37 for (int i=1;i<=E;i++) if(e[i].c==0)e[i].w+=mid;38 sort(e+1,e+1+E,cmp);39 int h=kls();40 if(h>=need) ans=(tot-need*mid),l=mid+1;else r=mid-1;41 //ans这里要注意一下,1wa42 for (int i=1;i<=E;i++) if(e[i].c==0)e[i].w-=mid;43 }44 printf("%d",ans);45 }

 

转载于:https://www.cnblogs.com/wuminyan/p/5194201.html

你可能感兴趣的文章
小程序加载svg图片
查看>>
JavaScript面向对象编程-多态
查看>>
sequelize 管理查询——一对一关联查询
查看>>
PHP下kafka的常用脚本实践
查看>>
AJAX
查看>>
百度地图绘制点、图形
查看>>
PHP 文件系统完全指南
查看>>
PyQt5,RadioButton
查看>>
js设计模式(二)-工厂模式
查看>>
前端技术周刊 2018-08-13:Web Components
查看>>
kube-proxy源码解析
查看>>
REM,你这磨人的小妖精!
查看>>
聊聊HystrixConcurrencyStrategy
查看>>
PHP多进程系列笔记(一)
查看>>
深析Vue双向数据绑定(MVVM模型)
查看>>
【跃迁之路】【485天】程序员高效学习方法论探索系列(实验阶段242-2018.06.05)...
查看>>
react如果你想为一个组件返回多个元素怎么办?
查看>>
mybatis 为什么每次插入的时候总会创建一个SqlSession?
查看>>
Vue 教程第十六篇—— Vuex 之 action
查看>>
javaScript旋转Base64图片并得到新的base64数据
查看>>