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 ...
随机推荐
- 【转】Android中JNI的使用方法
Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写, ...
- Saiku OLAP
简介 Saiku成立于2008年,由Tom Barber和Paul Stoellberger研发.最初叫做Pentaho分析工具,起初是基于OLAP4J库用GWT包装的一个前端分析工具.经过多年的演化 ...
- HTTP请求方法对照表
根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...
- 如何利用RMAN Debug和10046 Trace来诊断RMAN问题?
学习转摘:https://blogs.oracle.com/Database4CN/entry/%E5%A6%82%E4%BD%95%E5%88%A9%E7%94%A8rman_debug%E5%92 ...
- Httpservlet cannot be resolved to a type的原因与解决方法
刚开始学习Servlet,在Eclipse中新建了一个Servlet,不过页面上报错: Httpservlet cannot be resolved to a type,显然是Eclipse找不到相应 ...
- [hadoop] hadoop “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
执行 bin/hdfs dfs -mkdir /user,创建目录时出现警告信息. WARN util.NativeCodeLoader: Unable to load native-hadoop l ...
- openstack(liberty):部署实验平台(二,简单版本软件安装 part1)
软件安装过程中,考虑到现在是一个实验环境,且也考虑到规模不大,还有,网络压力不会大,出于简单考虑,将各个节点的拓扑结构改了一下,主要体现在网络节点和控制节点并在了一起.在一个服务器上安装! 到目前位置 ...
- html中间块居中宽度自适应
说来,这个其实不是个多难的事情,但是,若没有经验或者没有了解过html原数在浏览器中显示的顺序,可能还真是个问题,不知如何调整. 先说明下,在确定了左右两边显示的块的宽度后,再让中间块的宽度自适应,这 ...
- CSS3中样式顺序
.box{ /*1*/ background: yellow; /*2*/ background: radial-gradient(ellise, yellow, red); } 就以上样式1和2的顺 ...
- IOS开发—数据库的使用
1.首先封装方法(建一个DataBase类封装) 2.实现DataBase类的方法 3.第一步先建立一个表 4.进行插入.删除.更新 插入的sql语句:@"insert into user ...