poj 1789 Truck History 最小生成树
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 15235 | Accepted: 5842 |
Description
letters (each letter on each position has a very special meaning but that is unimportant for this task). At the beginning of company's history, just a single truck type was used but later other types were derived from it, then from the new types another types
were derived, and so on.
Today, ACM is rich enough to pay historians to study its history. One thing historians tried to find out is so called derivation plan -- i.e. how the truck types were derived. They defined the distance of truck types as the number of positions with different
letters in truck type codes. They also assumed that each truck type was derived from exactly one other truck type (except for the first truck type which was not derived from any other type). The quality of a derivation plan was then defined as
1/Σ(to,td)d(to,td)
where the sum goes over all pairs of types in the derivation plan such that to is the original type and td the type derived from it and d(to,td) is the distance of the types.
Since historians failed, you are to write a program to help them. Given the codes of truck types, your program should find the highest possible quality of a derivation plan.
Input
the codes uniquely describe the trucks, i.e., no two of these N lines are the same. The input is terminated with zero at the place of number of truck types.
Output
Sample Input
4
aaaaaaa
baaaaaa
abaaaaa
aabaaaa
0
Sample Output
The highest possible quality is 1/3.
题目大意:给一些字符串,这些字符串都是由7个字母组成,每个字符串代表一个点,点与点的距离是他们的字母不同的个数,让我们求最短距离和
prime算法邻接矩阵实现的,没用优先级队列,很纯的prim算法,500MS AC代码
#include<stdio.h>
#include<string.h> char strs[2010][10];
int map[2010][2010];
int n;//×ܵãÊý
int getdis(char *str1, char *str2)
{
int i;
int ret = 0;
for(i = 0; str1[i]; i++)
{
if(str1[i] != str2[i])
ret ++;
}
return ret;
}
int prim()
{
bool used[2010] = {0};
int dis[2010];
int ans = 0;
memset(dis, -1, sizeof(dis));
int i;
used[0] = 1;
for(i = 0; i < n; i++)
{
dis[i] = map[0][i];
}
for(i = 1; i < n; i++)
{
int j;
int min = 0x7fffffff, mark;
for(j = 0; j < n; j++)
{
if(dis[j] != -1 && min > dis[j] && !used[j])
{
min = dis[j];
mark = j;
}
}
used[mark] = 1;
ans += min;
for(j = 0; j < n; j++)
{
if(!used[j] && ( dis[j] == -1 || dis[j] > map[mark][j]) )
{
dis[j] = map[mark][j];
}
}
}
return ans;
}
int main()
{
// freopen("in.txt", "r", stdin);
while(scanf("%d", &n), n != 0)
{
memset(map, 0, sizeof(map));
int i;
for(i = 0; i < n; i++)
{
scanf("%s", strs[i]);
int j;
for(j = 0; j < i; j++)
{
int dis = getdis(strs[i], strs[j]);
map[j][i] = dis;
map[i][j] = dis;
}
}
int ans = prim();
printf("The highest possible quality is 1/%d.\n", ans);
}
return 0;
}
poj 1789 Truck History 最小生成树的更多相关文章
- poj 1789 Truck History 最小生成树 prim 难度:0
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19122 Accepted: 7366 De ...
- POJ 1789 -- Truck History(Prim)
POJ 1789 -- Truck History Prim求分母的最小.即求最小生成树 #include<iostream> #include<cstring> #incl ...
- Kuskal/Prim POJ 1789 Truck History
题目传送门 题意:给出n个长度为7的字符串,一个字符串到另一个的距离为不同的字符数,问所有连通的最小代价是多少 分析:Kuskal/Prim: 先用并查集做,简单好写,然而效率并不高,稠密图应该用Pr ...
- poj 1789 Truck History
题目连接 http://poj.org/problem?id=1789 Truck History Description Advanced Cargo Movement, Ltd. uses tru ...
- POJ 1789 Truck History【最小生成树简单应用】
链接: http://poj.org/problem?id=1789 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- POJ 1789 Truck History (最小生成树)
Truck History 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/E Description Advanced Carg ...
- poj 1789 Truck History【最小生成树prime】
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21518 Accepted: 8367 De ...
- POJ 1789 Truck History (Kruskal)
题目链接:POJ 1789 Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks ...
- POJ 1789 Truck History (Kruskal 最小生成树)
题目链接:http://poj.org/problem?id=1789 Advanced Cargo Movement, Ltd. uses trucks of different types. So ...
随机推荐
- 简单了解ddos攻击
1.一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机: 2.另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主 ...
- Zabbix 教程
Zabbix 教程http://blog.csdn.net/linuxlsq/article/details/52606086 MySQL在以下几种情况会创建临时表:1.UNION查询:2.用到TEM ...
- 并行计算之OpenMP入门简介
在上一篇文章中介绍了并行计算的基础概念,也顺便介绍了OpenMP. OpenMp提供了对于并行描述的高层抽象,降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本身,而非其具体实现 ...
- js为DIV动态设置id属性
<script> var objs=document.getElementById("iproduct").getElementsByTagName("div ...
- 剑指offer系列56---连续子数组的最大和
[题目]输入一个整型数组,数组里有正数也有负数.数组中一个或连续多个整数组成一个子数组. * 求所有子数组和的最大值. * [思路]连续求和数组元素.一旦得到的和小于0,就抛弃前面的数组,从当前值重写 ...
- 【jdbcTemplate】使用jdbcTemplate查询的三种回调
用于查询的回调接口定义主要有以下三种: org.springframework.jdbc.core.ResultSetExtractor. 基本上属于JdbcTemplate内部使用的Callbac ...
- 【Struts2学习笔记-8】Struts2实现json数据的返回
需要的jar包 struts2-json-plugin-2.3.12.jar xwork-core-2.3.16.3.jar struts.xml 来自为知笔记(Wiz) 附件列表 IMG_20150 ...
- 文件Copy和文件夹Copy
文件Copy和文件夹Copy using System.Collections.Generic; using System.Linq; using System.Text; using System. ...
- 发布一个.net mvc站点遇到的问题及解决
1.先通过vs2012发布.net mvc项目,遇到问题是一路默认下来,提示发布已成功,但对应文件夹里没有任何文件 解决: 第一步,新建了一个文件夹 第二步,在[配置文件]步骤,新建配置文件 第三步, ...
- 黄聪:使用$.getJSON解决ajax跨域访问 JQuery 的跨域方法(服务器端为wordpress程序)
客户端: <input id="cat" name="cat" type="hidden" value="<? ech ...