题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1029

题目大意:一个发电站,给n座房子供电, 任意房子之间有电线直接或者间接相连接, 现在想知道需要连接这些房子花费的平均电线长度。平均电线长度 = (最长电线长度 + 最短电线长度)/ 2;

解题思路:裸的最小生成树

代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = ;
struct edge
{
int s, t, l;
edge() {}
edge(int s, int t, int l):s(s), t(t), l(l) {}
};
vector<edge>vec;
int par[N], Rank[N];
int n; void init()
{
for(int i=; i<=n; ++ i)
par[i] = i, Rank[i] = ;
} int Find(int x)
{
if(par[x] == x)
return x;
else
return par[x] = Find(par[x]);
} void unite(int x, int y)
{
x = Find(x), y = Find(y);
if(x == y)
return ; if(Rank[x] < Rank[y])
par[x] = y;
else
{
par[y] = x;
if(Rank[x] == Rank[y])
Rank[x] ++;
}
} bool same(int x, int y)
{
return Find(x) == Find(y);
} bool cmp(const edge &a, const edge &b)
{
return a.l < b.l;
} bool Cmp(const edge &a, const edge &b)
{
return a.l > b.l;
} int kruskal(int m)
{
init();
if(m == )
sort(vec.begin(), vec.end(), cmp);
else
sort(vec.begin(), vec.end(), Cmp);
int res = ;
for(int i=; i<vec.size(); ++ i)
{
edge e = vec[i];
if(!same(e.s, e.t))
{
unite(e.s, e.t);
res += e.l;
}
}
return res;
} void solve(int cases)
{
scanf("%d", &n);
vec.clear();
while()
{
int s, t, l;
scanf("%d%d%d", &s, &t, &l);
if((s || t || l) == false)
break;
vec.push_back(edge(s, t, l));
} int ans = ;
ans += kruskal();
ans += kruskal();
if(ans & )
printf("Case %d: %d/%d\n", cases, ans, );
else
printf("Case %d: %d\n", cases, ans/); } int main()
{
int t;
scanf("%d", &t);
for(int i=; i<=t; ++ i)
solve(i);
return ;
}

Light OJ 1029- Civil and Evil Engineer (图论-最小生成树)的更多相关文章

  1. Lightoj 1029 - Civil and Evil Engineer

    1029 - Civil and Evil Engineer    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limi ...

  2. Civil and Evil Engineer(普林姆)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=198#problem/E 水题一道,题意就是让求一遍最小生成树与最大生成树,但我 ...

  3. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  4. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  5. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

  8. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  9. Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

    题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...

  10. Jan's light oj 01--二分搜索篇

    碰到的一般题型:1.准确值二分查找,或者三分查找(类似二次函数的模型). 2.与计算几何相结合答案精度要求比较高的二分查找,有时与圆有关系时需要用到反三角函数利用 角度解题. 3.不好直接求解的一类计 ...

随机推荐

  1. 开发android App干坏事(二)-wifi控制

    本来今天打算换个话题的,鉴于昨天android篇反响还不错,最近也是在做这方面的东西,今天聊聊一个新的android的发现-wifi的控制(好吧,其实也不能说是坏事,只是觉得wifi安全还是要引起警示 ...

  2. The PHP Package 之 monolog[转]

    Monolog 发送你的日志到文件.到sockets.到邮箱.到数据库或(和)者其他网路存储服务(云).Monolog可以做到同时保存到一个或多个存储介质(后面的栈冒泡处理). 安装   $ comp ...

  3. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  4. AngularJS之Directive,scope,$parse

    AngularJS内幕详解之 Directive AngularJS内幕详解之 Scope AngularJS的指令(Directive) compile和link的区别及使用示例 浅谈Angular ...

  5. 《Linux企业应用案例精解(第2版)》新书发售啦

    本书在出版当年就获得了不错的销量,同时被中国科学院国家科学图书馆.中国国家图书馆.首都图书馆.清华大学.北京大学等上百所国内综合性大学图书馆收录为馆藏图书,在IT业界赢得了良好的口碑.随后2012年年 ...

  6. Nodejs简单介绍以及在windows环境下安装与配置流程

    简介 一. Nodejs是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. ...

  7. 关于Hibernate XXX is not mapped 错误

    我的实体类是这么配置的 @Entity(name="EntityName")  //必须,name为可选,对应数据库中一的个表 就会出现 XXX is not mapped.   ...

  8. Tomcat日志切割

    下载并解压缩 cronolog # tar zxvf cronolog-1.6.2.tar.gz 2.进入cronolog安装文件所在目录 # cd cronolog-1.6.2 3.运行安装  # ...

  9. Nginx的安装配置 例子

    1.下载 2.解压 3.运行 a.双击nginx.bat b.启动Nginx 会发现进程里面已经开始运行 4.配置 a.双击打开配置文件夹里面的nginx.conf b.修改 upstream tee ...

  10. noSuchMethodException问题

    上午遇到一个nosuchMethodException 折腾了一上午发现是jar包冲突引起的.首先发现单独运行没问题,和其他项目整合后就有问题,当时以为代码问题,其实早该想到是jar包冲突造成的... ...