poj 1789 Truck History

来源:互联网 发布:icmp 用的端口 编辑:程序博客网 时间:2024/05/19 02:00

链接:点击打开链接

用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号衍生出来,代价是这两个编号之间相应的distance,现在要找出一个衍生方案,使得总代价最小,也就是distance之和最小。

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;#define INF 0x7f7f7f7fint cmp(char *str1,char *str2){    int sum=0; for(int i=0;i<7;i++) if(str1[i]!=str2[i]) sum++; return sum;}int edge[2010][2010];int nn,vis[2010];void prime(int x){ int i,j,k; int sum_i,mark[2010],mi_n; for(i=1;i<=nn;i++){  mark[i]=edge[x][i];  vis[i]=0; }vis[x]=1; sum_i=0; for(i=1;i<=nn;i++){   mi_n=INF;   for(j=1;j<=nn;j++){    if(!vis[j]&&mark[j]<mi_n){    mi_n=mark[j];    k=j;    }   }   vis[k]=1;   if(mi_n!=INF)   sum_i+=mi_n;   for(j=1;j<=nn;j++){    if(!vis[j]&&edge[k][j]<mark[j])    mark[j]=edge[k][j];   } } printf("The highest possible quality is 1/%d.\n",sum_i);}int main(){ int i,j; char str[2010][10]; while(~scanf("%d",&nn)&&nn){   for(i=1;i<=nn;i++)   for(j=1;j<=nn;j++)   edge[i][j]=INF;  for(i=1;i<=nn;i++)  scanf("%s",str[i]);  for(i=1;i<=nn;i++)   for(j=i+1;j<=nn;j++)     edge[i][j]=edge[j][i]=cmp(str[i],str[j]);   prime(1); } return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 没收到货申请退款卖家不处理怎么办 京东已收到货却不处理退款怎么办 货退了卖家不退款怎么办 淘宝退了货卖家不退款怎么办 手机淘宝不显示图片怎么办 京东申请退款卖家不处理怎么办 企业网银冻结了怎么办 农行k宝坏了怎么办 手机检测不到u盾怎么办 农行有k宝怎么办信用卡 k米怎么点不了怎么办 c1驾照被扣3分怎么办 淘宝账号被黑了怎么办 淘宝卖家号虚假交易违规怎么办 扣扣申诉成功后怎么办 微信二维码收款异常怎么办 国际包裹被退回去了怎么办 京东账号手机号换了怎么办 换手机号了淘宝账号怎么办 qq登录id密码忘记怎么办 iphone商店密码忘记了怎么办 淘宝账号被限制登入怎么办 手机换号码了qq登不上怎么办 换手机了qq登不上怎么办 微信帐号和密码错误怎么办 高考生忘记登录密码怎么办 高考生登录密码丢了怎么办 高考志愿登录密码忘了怎么办 电视声音和画面不同步怎么办 苹果5s不能开机怎么办 红米手机老是闪退怎么办 苹果7plus打字卡怎么办 手机总是出现无响应怎么办 手机淘宝怎么打不开了怎么办 淘宝买东西卖家不同意退货怎么办 苹果自带浏览器不能上网怎么办 淘宝账号买不了东西怎么办 支付宝被限制登录怎么办 微信登录不上 钱怎么办 淘宝账号买家权限被限制怎么办 淘宝中店新品打不开怎么办