Abandoned country

Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1756    Accepted Submission(s):
475

Problem Description
An abandoned country has n(n≤100000)
villages which are numbered from 1 to n.
Since abandoned for a long time, the roads need to be re-built. There are m(m≤1000000)
roads to be re-built, the length of each road is wi(wi≤1000000).
Guaranteed that any two wi
are different. The roads made all the villages connected directly or indirectly
before destroyed. Every road will cost the same value of its length to rebuild.
The king wants to use the minimum cost to make all the villages connected with
each other directly or indirectly. After the roads are re-built, the king asks a
men as messenger. The king will select any two different points as starting
point or the destination with the same probability. Now the king asks you to
tell him the minimum cost and the minimum expectations length the messenger will
walk.
 
Input
The first line contains an integer T(T≤10)
which indicates the number of test cases.

For each test case, the first
line contains two integers n,m
indicate the number of villages and the number of roads to be re-built. Next
m
lines, each line have three number i,j,wi,
the length of a road connecting the village i
and the village j
is wi.

 
Output
output the minimum cost and minimum Expectations with
two decimal places. They separated by a space.
 
Sample Input
1
4 6
1 2 1
2 3 2
3 4 3
4 1 4
1 3 5
2 4 6
 
Sample Output
6 3.33
 
 
Author
HIT
 
Source
 
Recommend
wange2014   |   We have carefully selected several
similar problems for you:  5733 5732 5731 5730 5729 
 
这题我完全没有思路,比赛时也不会写,看了别人的代码,貌似懂了一点点。。
 
题意:给了一个图,求最小生成树和期望值,最小生成树指所有的点连接成一条完整的路的最小权值和,期望指图中任意两个点的距离之和除以所有的边的个数(如测试数据:4个点,就是用1-2,1-3,1-4,2-3,2-4,3-4这六条距离的和除以边长总数6)。
 
附上代码:
 
 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define M 200010
#define ll long long
using namespace std;
ll n,m; struct edge
{
int u,v;
int w;
} e[M*]; struct node
{
int u,v,w;
int ans; ///ans记录经过这条边能达到的边的个数
int next; ///next记录上一次连接的边的序号
}ee[M]; int father[M],head[M]; ///father数组表示根节点,head记录每条边最后一次连接的边的序号
ll ans,sum;
int tol; ll dfs(int u,int p) ///搜索
{
ll num=;
for(int i=head[u];i!=-;i=ee[i].next)
{
if(ee[i].v!=p)
{
ee[i].ans+=dfs(ee[i].v,ee[i].u);
sum+=ee[i].ans*(n-ee[i].ans)*ee[i].w; ///此边能到达的边的个数*能到此边的边的个数*边的长度
// cout<<ee[i].ans<<" "<<n-ee[i].ans<<" "<<ee[i].w<<endl;
//cout<<sum<<endl;
num+=ee[i].ans;
}
}
return num;
} void add_node(edge a) ///建立邻接表
{
ee[tol].u=a.u; ///正向
ee[tol].v=a.v;
ee[tol].w=a.w;
ee[tol].ans=;
ee[tol].next=head[a.u];
head[a.u]=tol++;
ee[tol].u=a.v; ///反向
ee[tol].v=a.u;
ee[tol].w=a.w;
ee[tol].ans=;
ee[tol].next=head[a.v];
head[a.v]=tol++;
} int find(int x) ///搜索根节点
{
while(x!=father[x])
x=father[x];
return x;
} void sourch(int x,int y,int z,edge ss)
{
x=find(x);
y=find(y);
if(x!=y) ///若根节点不相同
{
add_node(ss); ///并且此边存在,建立邻接表
father[x]=y; ///将其连接在一起
ans+=z;
} } void init()
{
ans=,sum=;
int i,j;
for(i=; i<=n; i++)
{
father[i]=i; ///将所有父节点初始定义为自己本身
head[i]=-;
}
tol=;
for(i=; i<m; i++)
{
sourch(e[i].u,e[i].v,e[i].w,e[i]); ///求最小生成树
}
dfs(,-);
ll nn=n*(n-)/;
printf("%I64d %.2lf\n",ans,(double)sum/nn);
} bool cmp(edge a,edge b)
{
return a.w<b.w;
} int main()
{
int T,i;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld",&n,&m);
for(i=; i<m; i++)
{
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); ///记录每边的数据
}
sort(e,e+m,cmp); ///要选取最小的花费,因此要进行排序
init();
}
return ;
}

hdu 5723 Abandoned country(2016多校第一场) (最小生成树+期望)的更多相关文章

  1. HDU 5723 Abandoned country(落后渣国)

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

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

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

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

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

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

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

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

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

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

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

  7. HDU 5723 Abandoned country(kruskal+dp树上任意两点距离和)

    Problem DescriptionAn abandoned country has n(n≤100000) villages which are numbered from 1 to n. Sin ...

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

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

  9. HDU 5723 Abandoned country(最小生成树+边两边点数)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5723 题意:给出一个无向图,每条路都有一个代价,求出把所有城市连通的最小代价.在此基础上,国王会从这 ...

随机推荐

  1. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  2. System V启动脚本启动的服务

    /etc/rc.d/init.d/目录下的内容如下:这些常用的服务器都是System v的服务,要控制System V 的服务,我们可以使用以下命令 #/etc/rc.d/init.d/script  ...

  3. RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占优势

    美国时间3月4-8日,国际知名信息安全峰会RSA Conference在美国旧金山开幕,云安全及云可以为企业提供更可靠的资产管理方式成为大会热点. 此次峰会共吸引全球700多家机构参展,其中近42%为 ...

  4. javascript函数式编程和链式优化

    1.函数式编程理解 函数式编程可以理解为,以函数作为主要载体的编程方式,用函数去拆解.抽象一般的表达式 与命令式相比,这样做的好处在哪?主要有以下几点: (1)语义更加清晰 (2)可复用性更高 (3) ...

  5. 如何让div处于body居中的状态

    <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8&qu ...

  6. 第十章—DOM(一)——Document类型

    DOCUMENT类型 JS通过document类型表示文档,在文档中document对象是HTMLDocument的一个实例,表示整个HTML页面.document对象是window对象的一个属性,因 ...

  7. Linux下的权限管理

    Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w.x. Linux下权 ...

  8. tes..

    力扣刷题 二分查找法 二分查找法又称折半查找法. 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 首先 ...

  9. 计算机组成原理作业一 熟悉MIPS指令

    第一题 .data outputd: .asciiz "Alpha","November","First","alpha" ...

  10. kubernetes1.4新特性:支持两种新的卷插件

    背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...