Abandoned country(最小生成树+树形DP)
#include<bits/stdc++.h>
using namespace std; struct node{
int u, v, w, nex;
bool gone; node(){}
node(int a,int b,int c){
u = a;v = b;w = c;gone = false;
}
bool operator <(const node&a)const{
return w < a.w;
}
};
const int maxE = ;
const int maxP = ;
node Gra[maxE];
int dp[maxP], F[maxP];
int T,n,m;
long long ans;
double edgeSum;
vector<pair<int, int> >mp[maxP]; int Find(int x){
if(F[x] == x) return x;
return F[x] = Find(F[x]);
} void init(int nn){
for(int i = ; i <= nn; i ++){
F[i] = i;
mp[i].clear();
}
edgeSum = ;
ans = ;
} int dfs(int rt, int no){
int point = ;
for(int i = mp[rt].size() - ; i >=; i --){
int to = mp[rt][i].first;
int w = mp[rt][i].second;
if(to == no) continue;
point += dfs(to, rt);
double temp = ((double)dp[to] * (double)(n - dp[to]) * w);
edgeSum += temp;
}
dp[rt] = point;
return point;
} int main(){
int w,v,u;scanf("%d",&T);
while(T --){
scanf("%d%d",&n,&m);
init(n);
for(int i = ; i < m; i ++){
scanf("%d%d%d",&Gra[i].u,&Gra[i].v,&Gra[i].w);
}
sort(Gra, Gra + m);
for(int i = ; i < m; i ++){
u = Gra[i].u;v = Gra[i].v;w = Gra[i].w;
int fina = Find(u), finb = Find(v);
if(fina != finb){
F[fina] = finb;
ans = ans + w;
mp[u].push_back(make_pair(v,w));
mp[v].push_back(make_pair(u,w));
}
}
dfs(, );
printf("%lld %.2lf\n",ans,edgeSum*2.0/n/(n - ));
}
return ;
}
Abandoned country(最小生成树+树形DP)的更多相关文章
- HDU 5723 Abandoned country 最小生成树+搜索
Abandoned country Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 4126 Genghis Khan the Conqueror 最小生成树+树形dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4126 Genghis Khan the Conqueror Time Limit: 10000/50 ...
- hdu 4081 最小生成树+树形dp
思路:直接先求一下最小生成树,然后用树形dp来求最优值.也就是两遍dfs. #include<iostream> #include<algorithm> #include< ...
- Install Air Conditioning HDU - 4756(最小生成树+树形dp)
Install Air Conditioning HDU - 4756 题意是要让n-1间宿舍和发电站相连 也就是连通嘛 最小生成树板子一套 但是还有个限制条件 就是其中有两个宿舍是不能连着的 要求所 ...
- hdu 5723 Abandoned country 最小生成树 期望
Abandoned country 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5723 Description An abandoned coun ...
- hdu 5723 Abandoned country 最小生成树+子节点统计
Abandoned country Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 【HDU - 4340】Capturing a country(树形DP)
BUPT2017 wintertraining(15) #8A 题意 n(<100)个城市组成的树.A攻击i城市需要a[i]代价,B需要b[i].如果一个城市的邻居被A攻击了,那么A攻击它只要A ...
- HDU 5723 Abandoned country(最小生成树 + 树形DP)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5723 [题目大意] n座城市,m条路径,求解: 1.最短的路径和,使得n座城市之间直接或者间接连通 ...
- hdu4126Genghis Khan the Conqueror (最小生成树+树形dp)
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others) Total Submiss ...
随机推荐
- liteide 去除go程序cmd窗口
http://blog.csdn.net/aqtata/article/details/53389261
- html5页面自适应移动端
1. <!-- 这段代码的意思是,让 viewport 的宽度等于物理设备上的真实分辨率,不允许用户缩放,这样 dpi 肯定和设备上的真实分辨率是一样的,不做任何缩放,网页会因此显得更细腻. 1 ...
- 10种linux下磁盘快照方式恢复系统
导读 大家都知道windows系统有一个磁盘快照的功能,在windows2003中系统恢复开始依赖于一个叫做硬盘快照服务(Volume Snapshot Service)的服务,他能够自动创建系统快照 ...
- java应用零停机,时间索引重建(reindex)
一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中 批量查询的时候,建 ...
- FPGA设计中的异步复位、同步释放思想
1.一个简单的异步复位例子: module test( input clk, input rst_n, input data_in, output reg out ); always@(posedge ...
- redis缓存和mysql数据库同步
附redis关于缓存雪崩和缓存穿透,热点key 穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层.从而失去缓存的意义. 解决办法: 持久层查询不到就缓存空结果,查询时先判断缓存 ...
- 013-并发编程-java.util.concurrent.locks之-AbstractQueuedSynchronizer-用于构建锁和同步容器的框架、独占锁与共享锁的获取与释放
一.概述 AbstractQueuedSynchronizer (简称AQS),位于java.util.concurrent.locks.AbstractQueuedSynchronizer包下, A ...
- 递归与非递归打印乘法口诀表--Scala(指令式、函数式思维练习)
object Test extends App { def printMultiTable() { var i = 1 while (i < 10) { var j = 1 while (j & ...
- Observer(__ob__: Observer) 对象添加属性
重点通过这句话给对象添加属性: this.$set(r,'upshow',false); 在data中定义laws来装从接口中请求到数据 data(){ return{ laws:[],//法律依据 ...
- Sublime Text 许可证
----- BEGIN LICENSE Alexander Single User License EA7E- 51F47F09 4EAB1285 7827EFF0 8B1207DC A76A6EA3 ...