题目链接:hdu 5723 Abandoned country

题目大意:N个点,M条边;先构成一棵最小生成树,然后这个最小生成树上求任意两点之间的路径长度和,并求期望

/**************************************************************
Problem:hdu 5723
User: youmi
Language: C++
Result: Accepted
Time:2932MS
Memory:22396K
solution:首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然是唯一的,
那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下来的问题就可以转换成
在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就
是边的两端的点数之积。那么这条边的总贡献就是次数*边 权。最后得到所有边的贡献之和再除以总路
径数n*(n-1)/2n∗(n−1)/2就是答案。可以OnOn求出。任取一点为根dfs,对每个点ii记录其子树包
含的点数(包括其自身),设点数为sum[i]sum[i],则ii的父亲一侧的点数即为n-sum[i]n−sum[i]。
一边遍历一边统计就行。
****************************************************************/
//#pragma comment(linker, "/STACK:1024000000,1024000000")
//#include<bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <cmath>
#include <queue>
#include <deque>
#include <string>
#include <vector>
#define zeros(a) memset(a,0,sizeof(a))
#define ones(a) memset(a,-1,sizeof(a))
#define sc(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d%d",&a,&b)
#define sc3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define scs(a) scanf("%s",a)
#define sclld(a) scanf("%I64d",&a)
#define pt(a) printf("%d\n",a)
#define ptlld(a) printf("%I64d\n",a)
#define rep(i,from,to) for(int i=from;i<=to;i++)
#define irep(i,to,from) for(int i=to;i>=from;i--)
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define lson (step<<1)
#define rson (lson+1)
#define eps 1e-6
#define oo 0x3fffffff
#define TEST cout<<"*************************"<<endl
const double pi=*atan(1.0); using namespace std;
typedef long long ll;
template <class T> inline void read(T &n)
{
char c; int flag = ;
for (c = getchar(); !(c >= '' && c <= '' || c == '-'); c = getchar()); if (c == '-') flag = -, n = ; else n = c - '';
for (c = getchar(); c >= '' && c <= ''; c = getchar()) n = n * + c - ''; n *= flag;
}
int Pow(int base, ll n, int mo)
{
if (n == ) return ;
if (n == ) return base % mo;
int tmp = Pow(base, n >> , mo);
tmp = (ll)tmp * tmp % mo;
if (n & ) tmp = (ll)tmp * base % mo;
return tmp;
}
//*************************** int n,m;
const int maxn=+;
int T,head[maxn],fa[maxn],vis[maxn];
struct Edge
{
int u,v;
ll w;
void init(int _u,int _v,ll _w)
{
u=_u,v=_v,w=_w;
}
}edge[maxn*];
int get_f(int u)
{
return u==fa[u]?u:fa[u]=get_f(fa[u]);
}
bool cmp(Edge a,Edge b)
{
return a.w<b.w;
}
struct side
{
int v,next;
ll w;
}e[maxn*];
void init()
{
T=;
ones(head);
zeros(vis);
}
void build(int u,int v,ll w)
{
e[T].v=v;
e[T].w=w;
e[T].next=head[u];
head[u]=T++;
}
void kruskal()
{
sort(edge+,edge++m,cmp);
rep(i,,n)
fa[i]=i;
ll sum=;
rep(i,,m)
{
int f1=get_f(edge[i].u);
int f2=get_f(edge[i].v);
if(f1!=f2)
{
fa[f2]=f1;
build(edge[i].u,edge[i].v,edge[i].w);
build(edge[i].v,edge[i].u,edge[i].w);
sum+=edge[i].w;
//j++;
}
}
printf("%I64d ",sum);
}
double tt;
ll dfs(int u)
{
ll num=,temp=;
vis[u]=;
for(int i=head[u];~i;i=e[i].next)
{
int v=e[i].v;
ll w=e[i].w;
if(!vis[v])
{
temp=dfs(v);
tt+=1.0*w*(1.0*(n-temp)*temp);
num+=temp;
}
}
return num;
} void sovle()
{
tt=;
dfs();
tt=tt*2.0/(1.0*n*(n-));
printf("%.2lf\n",tt);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int T_T;
scanf("%d",&T_T);
for(int kase=;kase<=T_T;kase++)
{
sc(n);
sc(m);
init();
int u,v;
ll w;
rep(i,,m)
{
sc2(u,v);sclld(w);
edge[i].init(u,v,w);
}
kruskal();
sovle();
}
}

最小生成树 kruskal hdu 5723 Abandoned country的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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. 小白学Linux(三)--文件系统基本结构

    Linux文件系统是一个倒立的单根树状结构,文件名称严格区分大小写(windows系统则是对大小写不明感的).路径用“/”分隔,跟windows的“\”不同. 这里我画了一张一般Linux系统的正常目 ...

  2. [moka同学笔记]yii2 activeForm 表单样式的修改(二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAEAAANXCAIAAADLkdErAAAgAElEQVR4nOzdfWwc953nef6zwO5Zg8

  3. (旧)子数涵数·VB——变量

    最近,VB吧频繁出现如下图所示的帖子(现在C吧.VB吧等都已经被二级考生玩坏了) 这主要用到的是变量的概念 首先,我们来看一下变量的数据类型 当然,就这题而言,数据类型不是重点,主要考察的是变量的作用 ...

  4. PHP学习笔记:通过curl实现采集网站内容

    关于curl,请各位同学自行百度,我直接上案例. 首先开启你的curl拓展,在php.ini文件把curl拓展开启,即取消extension=php_curl.dll的分号. eg:利用curl采集网 ...

  5. git 上传项目到github

    1.本地新建文件夹GIT,Git Bash打开命令窗口, ①git config --global user.name "名字"  eg:  git config --global ...

  6. java微信开发(wechat4j)——设置响应微信参数

    设置响应微信参数 wechat4j框架官方文档: https://github.com/sword-org/wechat4j/wiki

  7. SharePoint 2013 创建搜索中心及搜索设置

    本文没有太多深奥的东西,只是简单的搜索配置,如果你已经掌握请略过本文. 好了,进入内容简介,众所周知,搜索是SharePoint一大特性,下面,我们简单介绍下搜索中心的创建. 1.创建Search子网 ...

  8. 【读书笔记】iOS-属性列表

    一,在Cocoa中,有一类名为属性列表的对象,常简写为plist.这些列表包含Cocoa知道如何操作的一组对象.具体来讲,Cocoa如何知道将这们保存在文件中并进行加载.属性列表类包括NSArray, ...

  9. iOS 界面调试利器Reveal

    Reveal下载地址:http://revealapp.com/ ,目前要收费了,而且还不便宜,好东西都这样嘛~ 针对越狱设备和非越狱设备可以采取不同的方法,一种是在工程项目中加入Reveal.fra ...

  10. [QualityCenter]设置工作流脚本-新建缺陷时字段自动生成

    需求:新建缺陷时,自动生成缺陷状态.检查者和检查日期的值. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New    On Error Re ...