poj 1789 Truck History 最小生成树 prim 难度:0
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 19122 | Accepted: 7366 |
Description
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
Output
Sample Input
4
aaaaaaa
baaaaaa
abaaaaa
aabaaaa
0
Sample Output
The highest possible quality is 1/3.
Source
#include <iostream>
#include <cstring> using namespace std;
char str[2001][9];
int d[2001][2001];
int mind[2001];//mind restore the min distance of the point between the tree when the point hasn't been add into
//rather than the point in the tree to all the point not in the tree
bool vis[2001];
int n;
int ans;
int index;
void setd(){
for(int i=0;i<n;i++){
d[i][i]=0;
for(int j=i+1;j<n;j++){
d[i][j]=d[j][i]=0;
for(int k=0;k<7;k++){
if(str[i][k]!=str[j][k]){
d[i][j]++;
}
}
d[j][i]=d[i][j];
}
}
}
void prim(){
memset(mind,0x3f,sizeof(mind));
memset(vis,0,sizeof(vis));
index=1;
vis[0]=true;
ans=0;
int s=0;
while(index<n){
int minnum=0x3f3f;
int mini=0;
for(int i=0;i<n;i++){
if(!vis[i]&&d[s][i]<mind[i]){
mind[i]=d[s][i];//use i to refresh all the point
}
if(!vis[i]&&mind[i]<minnum){
minnum=mind[i];
mini=i;
}
}
ans+=minnum;
vis[mini]=true;
s=mini;
index++;
}
}
int main(){
ios::sync_with_stdio(false);
while(cin>>n&&n){
for(int i=0;i<n;i++){
cin>>str[i];
}
setd();
prim();
cout<<"The highest possible quality is 1/"<<ans<<".\n";
} return 0;
}
poj 1789 Truck History 最小生成树 prim 难度:0的更多相关文章
- POJ 1789 -- Truck History(Prim)
POJ 1789 -- Truck History Prim求分母的最小.即求最小生成树 #include<iostream> #include<cstring> #incl ...
- poj 1789 Truck History 最小生成树
点击打开链接 Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15235 Accepted: ...
- POJ 1789 Truck History(Prim+邻接矩阵)
( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
- 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 ...
随机推荐
- Python实现进程同步和通信
转自:https://blog.csdn.net/u014556057/article/details/66974452
- sqlserver如何读写操作windows系统的文件
DECLARE @object int DECLARE @hr int DECLARE @src varchar(255), @desc varchar ...
- Yarn框架和工作流程研究
一.概述 将公司集群升级到Yarn已经有一段时间,自己也对Yarn也研究了一段时间,现在开始记录一下自己在研究Yarn过程中的一些笔记.这篇blog主要主要从大体上说说Yarn的基本架构以及其 ...
- Mybatis怎么在mapper中用多个参数
原文地址:https://github.com/mybatis/mybatis-3/wiki/FAQ How do I use multiple parameters in a mapper? Jav ...
- eclipse+maven+tomcat构建web工程
我们要利用Maven构建一个web应用,开发环境为eclipse+tomcat.构建过程如下: 1.工具准备 eclipse:版本为eclipse 4.2(Juno Service),maven插件的 ...
- L1正则与L2正则
L1正则是权值的绝对值之和,重点在于可以稀疏化,使得部分权值等于零. L1正则的含义是 ∥w∥≤c,如下图就可以解释为什么会出现权值为零的情况. L1正则在梯度下降的时候不可以直接求导,可以有以下几种 ...
- 528. Random Pick with Weight
1. 问题 给定一个权重数组w,w[i]表示下标i的权重,根据权重从数组中随机抽取下标. 2. 思路 这道题相当于 497. Random Point in Non-overlapping Recta ...
- P1083 借教室(差分+二分)
P1083 借教室 第一眼:线段树. 然鹅懒得写. 正解:差分+二分. 显然订单合法的上线可以二分 然后差分数组维护一下.没了. #include<iostream> #include&l ...
- 使用NodeJS将文件或图像上传到服务器
原文链接:http://www.codeceo.com/article/nodejs-upload-file-to-server.html
- 20145322 何志威《网络对抗》shellcode注入&Return-to-libc攻击深入
基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. execstack - ...