题目链接: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. Win10光驱不见了

    1. 网上教程试了很多,如下: http://jingyan.baidu.com/article/02027811656a8b1bcd9ce570.html http://jingyan.todgo. ...

  2. Tiny6410 LCD设置

    1.注意LCD的硬件连接 2.LCD初始化 2.1 初始化步骤 LCD时序设置 LCD芯片 2.2 引脚初始化 2.3 配置 MIFPCON 寄存器及SPCON 寄存器 2.4 配置VIDCONx 2 ...

  3. jQuery.fn.extend() 与 jQuery.extend()

    jQuery.fn如何扩展. jQuery插件 $.fn(object)与$.extend(object) jQuery提供了两个方法帮助开发插件 $.extend(object);扩展jQuery类 ...

  4. session 丢失和解决方案

    在ASP.NET的开发中,总遇到Session丢失.最常见的情况是当用户登录后将用户信息保存在Session中例如Session["user"]=user;在其后的页面中检查Ses ...

  5. 从入门到精通C++需要学的10本书

    学习C++从入门到精通的的十本最经典书籍  文章来源中国IT实验室收集整理作者佚名更新时间2009-5-16 12:27:05 保存本文保存本文推荐给好友推荐给好友收藏本页收藏本页 欢迎进入C/C++ ...

  6. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  7. javascript冒泡算法

    var arr = [10, 10, 3, 2, 5 , 4, 8, 3]; function reSort(arr) { var temp = 0; var len = arr.length; fo ...

  8. Xamarin Android自学和实践步骤

    一.入门(已完成) 1.学习Xamarin Android项目的基本结构 2.学习界面布局的基本方式 3.学习基本编码规则 4.学习页面跳转和传值 5.学习对话框和提示信息显示方法 6.学习使用系统剪 ...

  9. 构建winform控件数据缓存器

    DataBindingHelper使用手册 1.引用Rabbit.Core.dll文件 也就是我自己编写的功能库Rabbit.Core.dll呵呵. Rabbi.Core.DLL密码:dgqv     ...

  10. We have a problem with promises

    原文地址:http://fex.baidu.com/blog/2015/07/we-have-a-problem-with-promises/ 用Javascript的小伙伴们,是时候承认了,关于 p ...