题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5723

题意:求最小生成树,并且求这棵最小生成树上所有边走过次数的期望。

走过次数的期望=Σ边被走过次数*边权/(n*(n-1)/2)

求边被走过的次数,相当于关心这个边的两侧分别有多少点,走的次数就是两边的点数的乘积这个很好理解。可以从边的一侧开始dfs,找到这个边的一侧点数x,由于最小生成树是联通的,那么边的另一侧点数一定是n-x。所以这条边的贡献是(n-x)*x*w。

 #include <bits/stdc++.h>
using namespace std; typedef long long LL;
typedef struct Edge {
int v, next;
LL w;
}Edge; typedef struct E {
int u, v;
LL w;
}E;
const int maxn = ;
const int maxm = ;
int n, m;
E e[maxm<<];
Edge edge[maxm<<];
int head[maxn], ecnt;
int pre[maxn];
LL ret1, ret2; int find(int x) {
return x == pre[x] ? x : pre[x] = find(pre[x]);
} bool unite(int x, int y) {
x = find(x); y = find(y);
if(x != y) {
pre[x] = y;
return ;
}
return ;
} void init() {
memset(head, -, sizeof(head));
ecnt = ; ret1 = ; ret2 = ;
for(int i = ; i <= n; i++) pre[i] = i;
} void adde(int u, int v, LL w) {
edge[ecnt].v = v; edge[ecnt].w = w; edge[ecnt].next = head[u]; head[u] = ecnt++;
edge[ecnt].v = u; edge[ecnt].w = w; edge[ecnt].next = head[v]; head[v] = ecnt++;
} bool cmp(E a, E b) {
return a.w < b.w;
} int dfs(int u, int p) {
int siz = ;
for(int i = head[u]; ~i; i=edge[i].next) {
int v = edge[i].v; LL w = edge[i].w;
if(p == v) continue;
int pre = dfs(v, u);
siz += pre;
ret2 += (LL)pre * (LL)(n - pre) * w;
}
return siz;
} int main() {
//freopen("in", "r", stdin);
int T, u, v;
LL w;
scanf("%d", &T);
while(T--) {
scanf("%d%d",&n,&m);
init();
for(int i = ; i < m; i++) {
scanf("%d%d%lld",&u,&v,&w);
e[i].u = u; e[i].v = v; e[i].w = w;
}
sort(e, e+m, cmp);
for(int i = ; i < m; i++) {
u = e[i].u; v = e[i].v; w = e[i].w;
if(unite(u, v)) {
ret1 += w;
adde(u, v, w);
}
}
dfs(, -);
LL k = n * (n - );
printf("%lld %.2lf\n", ret1, 2.0*ret2/(double)k);
}
return ;
}

[HDOJ5723]Abandoned country(最小生成树,期望)的更多相关文章

  1. hdu 5723 Abandoned country 最小生成树 期望

    Abandoned country 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5723 Description An abandoned coun ...

  2. HDU 5723 Abandoned country 最小生成树+搜索

    Abandoned country Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  3. hdu 5723 Abandoned country 最小生成树+子节点统计

    Abandoned country Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  4. HDU 5723 Abandoned country (最小生成树+dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5723 n个村庄m条双向路,从中要选一些路重建使得村庄直接或间接相连且花费最少,这个问题就是很明显的求最 ...

  5. Abandoned country(最小生成树+树形DP)

    #include<bits/stdc++.h> using namespace std; struct node{ int u, v, w, nex; bool gone; node(){ ...

  6. HDU 5723 Abandoned country 【最小生成树&&树上两点期望】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5723 Abandoned country Time Limit: 8000/4000 MS (Java/ ...

  7. HDU 5723:Abandoned country(最小生成树+算期望)

    http://acm.hdu.edu.cn/showproblem.php?pid=5723 Abandoned country Problem Description   An abandoned ...

  8. hdu 5723 Abandoned country(2016多校第一场) (最小生成树+期望)

    Abandoned country Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  9. 最小生成树 kruskal hdu 5723 Abandoned country

    题目链接:hdu 5723 Abandoned country 题目大意:N个点,M条边:先构成一棵最小生成树,然后这个最小生成树上求任意两点之间的路径长度和,并求期望 /************** ...

随机推荐

  1. 第三方过滤器在TVideoGrabber中的使用

    在TVideoGrabber中可以使用第三方过滤器,并可插入到预览.录制或回放流中,添加到列表里. 要在一个图像中中应用一个过滤器,需要像下面的例子中一样调用 ThirdPartyFilter_Add ...

  2. android 学习随笔十九(对话框、样式、主题、国际化 )

    1.对话框 package com.itheima.dialog; import android.os.Bundle; import android.app.Activity; import andr ...

  3. linux设备驱动归纳总结(四):3.抢占和上下文切换【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-65711.html linux设备驱动归纳总结(四):3.抢占和上下文切换 xxxxxxxxxxxxx ...

  4. 连接ssh反应很慢,卡,延迟

    1.关闭DNS反向解析在linux中,默认就是开启了SSH的反向DNS解析,这个会消耗大量时间,因此需要关闭.# vi /etc/ssh/sshd_configUseDNS=no 在配置文件中,虽然U ...

  5. Android剪切板传递数据传递序列化对象数据

    一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...

  6. Content Delivery Network

    Coding Standards & Best Practices 7 Reasons to use a Content Delivery Network CDN公共库汇总

  7. 【Pro ASP.NET MVC 3 Framework】.学习笔记.3.MVC的主要工具-单元测试

    IProductRepository接口定义了一个仓库,我们通过它获得.更新Product对象.IPriceReducer接口指定了一个功能,它将要对所有的Products实施,通过一个参数,降低他们 ...

  8. Hibernate,JPA注解@ManyToMany

    @ManyToMany默认处理机制,当双向多对多关联中没有定义任何物理映射时, Hibernate根据以下规则生成相应的值: 关联表名: 主表表名+_下划线+从表表名: 关联到主表的外键名:从表用于关 ...

  9. 1、java基础回顾与加强

    一.    基础回顾 1   集合 1.1  集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:    数组实现, ...

  10. NSDictionary to jsonString || 对象转json格式

    -(NSString*)DataTOjsonString:(id)object { NSString *jsonString = nil; NSError *error; NSData *jsonDa ...