poj1789 Truck History最小生成树
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 20768 | Accepted: 8045 | 
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. 代码
基本prim模板没什么可说的,只是需要将字符串预处理为邻接矩阵即可
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int map[2005][2005];
char str[2005][7];
int vis[2005],dis[2005];
 int n;
int prim(int u){
   int sum=0;
   for(int i=1;i<=n;i++){
      dis[i]=map[u][i];
   }
   vis[u]=1;
   for(int i=1;i<n;i++){
    int tmin=999999999;
    int ans;
    for(int j=1;j<=n;j++){
        if(dis[j]<tmin&&!vis[j]){
            tmin=dis[j];
           ans=j;
           }
    }
    sum+=tmin;
    vis[ans]=1;
    for(int k=1;k<=n;k++){
        if(dis[k]>map[ans][k]&&!vis[k])
        dis[k]=map[ans][k];
    }
   }
   return sum;
}
int main(){
while(scanf("%d",&n)!=EOF){
        if(n==0)
        break;
memset(map,0,sizeof(map));
     memset(str,0,sizeof(str));
     memset(dis,0,sizeof(dis));
     memset(vis,0,sizeof(vis));
   getchar();
     for(int i=1;i<=n;i++){
        scanf("%s",str[i]);
        getchar();
}
     for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            int sum=0;
            for(int k=0;k<7;k++){
                if(str[i][k]!=str[j][k])
                    sum++;
            }
            map[i][j]=sum;
            map[j][i]=sum;
        }
     }
     printf("The highest possible quality is 1/%d.\n",prim(1));
   }
   return 0;
}
poj1789 Truck History最小生成树的更多相关文章
- POJ1789 Truck History 【最小生成树Prim】
		
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18981 Accepted: 7321 De ...
 - POJ1789 Truck History                                                                                            2017-04-13 12:02             33人阅读              评论(0)              收藏
		
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27335 Accepted: 10634 D ...
 - poj1789 Truck History
		
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20768 Accepted: 8045 De ...
 - poj 1789 Truck History 最小生成树
		
点击打开链接 Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15235 Accepted: ...
 - poj 1789 Truck History 最小生成树 prim 难度:0
		
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19122 Accepted: 7366 De ...
 - POJ1789:Truck History(Prim算法)
		
http://poj.org/problem?id=1789 Description Advanced Cargo Movement, Ltd. uses trucks of different ty ...
 - POJ1789 Truck History(prim)
		
题目链接. 分析: 最大的敌人果然不是别人,就是她(英语). 每种代表车型的串,他们的distance就是串中不同字符的个数,要求算出所有串的distance's 最小 sum. AC代码如下: #i ...
 - POJ 1789  Truck History (最小生成树)
		
Truck History 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/E Description Advanced Carg ...
 - POJ 1789:Truck History(prim&&最小生成树)
		
id=1789">Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17610 ...
 
随机推荐
- django-基于中间件实现限制ip频繁访问
			
########django-基于中间件写一个限制频繁登陆######## 额额,标题已经很醒目了,通过中间件去实现,其他方法也可以实现 浏览器前端传来的请求,必须通过中间件,才能到后面路由,视图函数 ...
 - 封装一个方法获取url上面的参数
			
一.取参 ] : ); ]; ; ]., -); ]) === ]; , , b: 'fdfdfd', c: '9999' })); //a=123546&b=fdfdfd&c=9 ...
 - multimap的使用
			
multimap由于允许有重复的元素,所以元素插入.删除.查找都与map不同. 插入insert(pair<a,b>(value1,value2)) #include <iostre ...
 - ABAP术语-Method
			
Method 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/05/1091077.html Component of classes in ...
 - ABAP术语-Interface Parameter
			
Interface Parameter 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/26/1081800.html Parameter t ...
 - 精干货! Java 后端程序员 1 年工作经验总结
			
一.引言 毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少 东西.这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护 和发布当救火队员的苦恼 ...
 - 第一次学习tornado小练习
			
内容 这次是python的一个web框架,tornado,这个web框架在python的几个web框架中一个比较简单的web框架,刚开始接触python的时候就知道python有两个比较常用的web框 ...
 - 深入了解jQuery Mobile-3装载器
			
介绍 当jQuery Mobile通过Ajax加载内容或用于自定义通知时,会显示一个小的加载叠加层. 标准loader $( document ).on( "click", &qu ...
 - HyperLedger Fabric 1.4 关键技术(6.4)
			
本节介绍从最底层的账本开始,逐一讲解账本的结构和存储.智能合约的编写和部署.通道的操作.节点的背书和提交.排序的共识和客户端SDK的接口调用,与交易流程顺序相反,由里及表的说明Fabric最关键的技术 ...
 - (数据科学学习手札16)K-modes聚类法的简介&Python与R的实现
			
我们之前经常提起的K-means算法虽然比较经典,但其有不少的局限,为了改变K-means对异常值的敏感情况,我们介绍了K-medoids算法,而为了解决K-means只能处理数值型数据的情况,本篇便 ...