Truck History (Prim算法)

来源:互联网 发布:乐视1s网络 编辑:程序博客网 时间:2024/06/06 11:36

Truck History

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 79   Accepted Submission(s) : 27
Problem Description
Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for vegetable delivery, other for furniture, or for bricks. The company has its own code describing each type of a truck. The code is simply a string of exactly seven lowercase 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 input consists of several test cases. Each test case begins with a line containing the number of truck types, N, 2 <= N <= 2 000. Each of the following N lines of input contains one truck type code (a string of seven lowercase letters). You may assume that 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
For each test case, your program should output the text "The highest possible quality is 1/Q.", where 1/Q is the quality of the best derivation plan.
 

Sample Input
4aaaaaaabaaaaaaabaaaaaaabaaaa0
 

Sample Output
The highest possible quality is 1/3.
 

Source
PKU

题意:

给出n个长度为7的字符串,每个字符串代表一个车,定义车的距离是两个字符串间不同字母的个数,题目要求的数不同的车的距离的最小值,即所求的就是最小生成树

思路:

用prim算法,一开始套的模板结果超市,后来修改了一点,Ac了。。。。

代码:

#include <iostream>#include <cstring>#include <string>#include <stdio.h>#define inf 0x3f3f3f3fusing namespace std;int g[3000][3000];int minn[3000];bool u[3000];string ss[3000];int main(){    //ios::sync_with_stdio(false);    int n,i,j;    while(scanf("%d",&n),n){        for(i=1;i<=n;i++)        {            cin>>ss[i];            for(j=1;j<=i;j++)            {                if(i==j){g[i][j]=0;continue;}                int tt=0;                for(int k=0;k<7;k++){if(ss[i][k]!=ss[j][k])tt++;}//记录距离                g[i][j]=g[j][i]=tt;            }        }        memset(minn,0x7f,sizeof(minn));        minn[1]=0;        memset(u,1,sizeof(u));        //int sum=0;        int cnt=inf;        for(i=1;i<=n;i++)        {            int k=0;            for(j=1;j<=n;j++)//找一个与生成树点相连的不在生成树的最小的点                if(u[j]&&(minn[j]<minn[k]))k=j;            u[k]=0;  //k入树            for(j=1;j<=n;j++) //修改所有与k相连的未进入生成树的点                if(u[j]&&(g[k][j]<minn[j]))                minn[j]=g[k][j];        }        int sum=0;        for(i=1;i<=n;i++)sum+=minn[i]; //累加权值        printf("The highest possible quality is 1/%d.\n",sum);    }return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 百度云视频很卡怎么办 考虫课程过期了怎么办 私教课程过期了怎么办 在异地交的社保怎么办 1岁宝宝吃粉笔怎么办 宝宝吃了彩色笔怎么办 宝宝吃了彩笔水怎么办 熹妃q传忘记密码怎么办 云课堂2忘记密码怎么办 云课堂密码忘了怎么办 小米云存储空间已经满怎么办 苹果手机云备份空间不足怎么办 办信用卡不知道公司电话怎么办 办信用卡不知道单位电话怎么办 朋友沉迷网络游戏怎么办英文作文 平板的密码忘了怎么办 白泥面膜过期了怎么办 小米手机桌面短信图标不见了怎么办 亚马逊账号注册扣款不成功怎么办 流量卡不用了怎么办啊 移动卡不想要了怎么办 b站调用速度过快怎么办 苹果系统占用19g怎么办 id被锁定了忘记密码怎么办 360儿童卫士忘记密码怎么办 微信注册忘记密码怎么办 旅行青蛙换手机iphone怎么办 网页邮箱添加不了附件怎么办 pos机密码忘了怎么办 在4楼上课地震了怎么办 微鲸电视待机打不开怎么办 苹果手机微信听不到语音怎么办 电信怎么办腾讯频看电视不要流量 孩子做事效率低怎么办教案 孩子做事效率低怎么办读后感 做事效率低总是焦虑怎么办 红米手机黑屏打不开怎么办 手机萤石云视频下载打不开怎么办 oppo打开网页视频慢怎么办? 晒课显示待提交怎么办 华为手机无法访问移动网络怎么办