题意:求最小生成树,和任意两个点之间距离的期望

官方题解:

最后求两遍点的积的时候,还是要判断父子关系。

注意 long long

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

const int maxn = +;
int father[maxn]; int Find_Set(int x) {
if(x!=father[x])
father[x] = Find_Set(father[x]);
return father[x];
} struct Edge {
int u,v,d;
bool operator < (const Edge & rhs) const {
return d < rhs.d;
}
}edges[+]; struct o {
int v,d;
}; vector <o> G[maxn];
int sum[maxn];
bool vis[maxn];
int ff[maxn]; int x;
void dfs(int r,int f) {
if(vis[r]) return ;
sum[r] = ;
vis[r] = true;
for(int i=;i<G[r].size();i++)
{
int v = G[r][i].v;
if(v!=f) {
ff[v] = r;
dfs(v,r);
sum[r] +=sum[v];
}
}
} vector<Edge> minans; int main()
{
//freopen("in.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--) {
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
father[i] = i; for(int i=;i<=n;i++) {
G[i].clear();
} minans.clear();
memset(sum,,sizeof(sum));
memset(vis,,sizeof(vis));
x = ; for(int i=;i<m;i++)
scanf("%d%d%d",&edges[i].u,&edges[i].v,&edges[i].d); sort(edges,edges+m); LL ans = ;
for(int i=;i<m;i++) {
int u = edges[i].u;
int v = edges[i].v;
int d = edges[i].d;
int fx = Find_Set(u);
int fy = Find_Set(v);
if(fx!=fy)
{
G[u].push_back((o){v,edges[i].d});
G[v].push_back((o){u,edges[i].d});
minans.push_back((Edge){u,v,d});
father[fy] = fx;
ans +=edges[i].d;
}
} dfs(,-); LL x = ;
for(int i=;i<minans.size();i++) {
int u,v,d;
u = minans[i].u;
v = minans[i].v;
d = minans[i].d; if(ff[u]==v) {
x +=(LL)sum[u]*(LL)((LL)n-sum[u])*d;
}
else if(ff[v]==u) {
x +=(LL)sum[v]*(LL)((LL)n-sum[v])*d;
} } LL mm = (LL)n*(LL)(n-)/;
printf("%I64d %.2lf\n",ans,x*1.0/mm); } return ;
}

HDU 5723 最小生成树上的期望的更多相关文章

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

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

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

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

  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(落后渣国)

    HDU 5723 Abandoned country(落后渣国) Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 ...

  5. Hdu 4081 最小生成树

    Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  6. HDU 1233(最小生成树)

    HDU 1233(最小生成树 模板) #include <iostream> #include <algorithm> #include <cstdio> usin ...

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

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

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

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

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

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

随机推荐

  1. Sqlite CodeFirst的初级实现

    示例实体: using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnn ...

  2. vector与array之间转换,向量与数据之间转换

    一维数组: vector<int> a; int b[5] = {1,2,3,4,5}; a.push_back(b);   二维数组: b[5][6] = {1,2,3,4,5,6... ...

  3. vi命令——修改文件内容

    以下内容转载自http://blog.csdn.net/bruce0532/article/details/7842384 vi编辑器是所有Unix及Linux系统下标准的编辑器,介绍一下它的用法和一 ...

  4. curl -w函数

    url_effective 最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形. http_code http状态码,如200成功,301转向,404未找到, ...

  5. [Activator- HelloAkka] Define our Messages

    An Actor does not have a public API in terms of methods that you can invoke. Instead its public API ...

  6. linux下统计文本行数的各种方法(二)

    上一篇讲的都是统计单个文件的方法,直接在命令行执行就可以.现在试试脚本的方式,统计多个文件的行数 一.统计目录下所有文件的文件数及所有行数 脚本暂时命名为count.sh,代码如下: #!/bin/b ...

  7. poj 1028 Web Navigation

    Web Navigation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31088   Accepted: 13933 ...

  8. java里面的package/import 和PHP里面的namespace/use 是一模一样的吗

    java里面的package/import 和PHP里面的namespace/use 是一模一样的吗? java: php package mypage; namespace mypage; impo ...

  9. Java学习第二十一天

    1:字符流(掌握) (1)字节流操作中文数据不是特别的方便,所以就出现了转换流. 转换流的作用就是把字节流转换字符流来使用. (2)转换流其实是一个字符流 字符流 = 字节流 + 编码表 (3)编码表 ...

  10. Bootstrap入门(第一天)

    一直都想认真的学习一下Bootstrap,但是由于种种原因,一直没有行动,虽然期间有使用过Bootstrap,但是都没有系统的学习过.最近工作室(学校老师的工作室)安排了一个前端任务让我跟进,主要是根 ...