【HDU】5723 Abandoned country(2016 Multi-University)
来源:互联网 发布:python hmac sha256 编辑:程序博客网 时间:2024/06/05 11:42
Abandoned country
题目链接
- Abandoned country
题目大意
有一个村子里面修公路,每条公路都有一个修建价值,现在让你把所有村子连起来,求最小价值,顺便求出所有公路的平均值。
题解
最小生成树+DFS
首先肯定是一个最小生成树了,主要是求所有路径的平均值。
可以看到是一颗树,想到在DFS的同时记录数据来求这颗树的所有路径和,我们画图发现,当前边对sum的贡献是
所以我们记录一个
每次求完一颗子树的时候加进总结过就行了。
这个题方法挺多的,好像还看到有人用DP?
代码
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define maxm 1000010#define maxn 100010#define LL long longusing namespace std;struct edge{ int u,v,next,d; bool operator<(const edge &x) const { return d<x.d; }};edge e[maxm<<1],E[maxm<<1];int pre[maxn],nume,numE,f[maxn];LL T,n,m;LL sum,tag;void addedge(edge e[],int u,int v,int d,int &nume){ e[nume].u=u; e[nume].v=v; e[nume].d=d; e[nume].next=pre[u]; pre[u]=nume++;}int getfather(int k){ if (f[k]==k) return k; else return f[k]=getfather(f[k]);}LL dfs(int u,int father,LL dis,LL last){ LL p=0,c,flag=tag+1; sum+=last; last+=tag*dis; tag++; for (int i=pre[u];i!=-1;i=E[i].next) { int v=E[i].v; if (v!=father) { sum+=(tag)*E[i].d; c=dfs(v,u,E[i].d,last+p); p+=c+(tag-flag)*E[i].d; flag=tag; } } return p;}int main(){ scanf("%I64d",&T); while (T--) { memset(f,0,sizeof(f)); memset(e,0,sizeof(e)); memset(pre,-1,sizeof(pre)); memset(E,0,sizeof(E)); nume=0; numE=0; sum=0; tag=0; int u,v,fu,fv,d; scanf("%I64d%I64d",&n,&m); for (int i=0;i<m;i++) { scanf("%d%d%d",&u,&v,&d); addedge(e,u,v,d,nume); addedge(e,v,u,d,nume); } sort(e,e+nume); LL ans=0; for (int i=0;i<=n;i++) f[i]=i; memset(pre,-1,sizeof(pre)); for (int i=0;i<nume;i++) { u=e[i].u; v=e[i].v; fu=getfather(u); fv=getfather(v); if (fu!=fv) { f[fv]=fu; ans+=e[i].d; addedge(E,u,v,e[i].d,numE); addedge(E,v,u,e[i].d,numE); } } dfs(1,0,0,0); LL nn= (n-1)*n/2; double exp=(double) sum/nn; printf("%I64d %.2lf\n",ans,exp); } return 0;}
0 0
- 【HDU】5723 Abandoned country(2016 Multi-University)
- 【Hdu 5723】Abandoned country【2016 Multi-University Training Contest 1】
- HDU 5723 Abandoned country(2016 Multi-University Training Contest 1的1001题)
- 2016 Multi-University Training Contest 1 hdu 5723 Abandoned country【Kruskal+Dfs】好题
- 2016 Multi-University Training Contest 1-1001---HDU 5723 Abandoned country(DFS+最小生成树)
- hdu 5723 Abandoned country(2016 Multi-University Training Contest 1——最小生成树+深搜)
- (HDU 5723)2016 Multi-University Training Contest 1 Abandoned country(图论)
- 2016 Multi-University Training Contest 1Abandoned country
- 2016 Multi-University Training Contest 1 1001.Abandoned country
- 2016 Multi-University Training Contest 1 Abandoned country
- 2016 Multi-University Training Contest 1 1001 Abandoned country
- 2016 Multi-University Training Contest 1 1001 Abandoned country (最小生成树+DFS)
- 2016 Multi-University Training Contest 1 1001 Abandoned country(最小生成树)
- HDU 5723 Abandoned country
- HDU 5723 Abandoned country
- HDU 5723 Abandoned country
- hdu 5723 Abandoned country
- HDU-5723 Abandoned country
- twemproxy的配置文件nutcracker.yml详解
- ASP.NET MVC4下使用MongoDB Helper帮助类实现时间戳和ObjectId相互转换
- Jersey+Spring+Hibernate搭建的一个简单Web Service
- AngularJS 最常用的八种功能
- 只有 20 行的 JavaScript 模板引擎
- 【HDU】5723 Abandoned country(2016 Multi-University)
- 第一篇微博,国际惯例
- 使用Spring的restTemplete进行Http请求
- Android Versions
- 盲打助手(Touch-Typing) 1.0 正式版 (下载)
- Tic-Tac-Toe - VolgaCTF - 2016 - PPC
- sql查询出来的一列多行数据拼接起来
- glMatrixMode()函数和glLoadldentity()说明
- [iOS] UIBezierPath画圆弧 addArcWithCenter