这题要把给的字符串变成边的权值

#include <cstdio>
#include <iostream>
#include <queue>
#include <string>
using namespace std;#define sf scanf
#define pf printf
#define debug printf("!\n")
#define blank printf("\n")
#define mem(a,b) memset(a,b,sizeof(a))const int MaxN = 2010;
const int INF = 1<<27;int p[MaxN];char str[2010][8];int w[MaxN*MaxN],r[MaxN*MaxN],u[MaxN*MaxN],v[MaxN*MaxN];int m,n;int find(int x){return p[x]==x?x:p[x]=find(p[x]);}int cmp(const int a,const int b)
{return w[a]<w[b];
}int kruskal()
{int ans = 0,i;for(i = 0;i<n;i++) p[i] = i;for(i = 0;i<m;i++) r[i] = i;sort(r,r+m,cmp);for(i = 0;i<m;i++){int e = r[i];int x = find(u[e]);int y = find(v[e]);if(x!=y){ans+=w[e];p[x] = y;}}return ans;
}int weight(int i,int j)
{int w = 0,k;for(k = 0;k<7;k++)if(str[i][k]!=str[j][k])w++;return w;
}int main()
{int i,j;while(~sf("%d",&n),n){m = 0;mem(u,0);mem(v,0);mem(w,0);for(i = 0;i<n;i++){sf("%s",str[i]);}for(i = 0;i<n;i++){for(j=i+1;j<n;j++){int tmp = weight(i,j);if(tmp==0)break;u[m] = i;v[m] = j;w[m++] = tmp;}}int ans = kruskal();pf("The highest possible quality is 1/%d.\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/qlky/p/5154797.html

POJ 1789(最小生成树)相关推荐

  1. Kuskal/Prim POJ 1789 Truck History

    题目传送门 题意:给出n个长度为7的字符串,一个字符串到另一个的距离为不同的字符数,问所有连通的最小代价是多少 分析:Kuskal/Prim: 先用并查集做,简单好写,然而效率并不高,稠密图应该用Pr ...

  2. poj 1789 Truck History(最小生成树 prim)

    题目:http://poj.org/problem?id=1789 大意:每个卡车都有自己的编号,由七位字母组成 d(to,td) is the distance of the types指t0 和 ...

  3. (最小生成树)Truck History --POJ -- 1789

    链接: http://poj.org/problem?id=1789 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2213 ...

  4. 【POJ - 1789】【ZOJ - 2158】【SCU - 1832】Truck History (最小生成树)

    题干: Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used f ...

  5. poj 1789 TruckHistory 最小生成树 Kruskal、Prim

    题意: n个车牌号,刚开始只有一个车牌,其他车牌都是由一个车牌直接或间接产生,一个车牌到另一个车牌的产生权值是它们之间的数字不同的个数,问产生的最小的边权和,即求最小生成树. Input: 多组数据. ...

  6. POJ - 1789 Truck History (最小生成树)

    https://vjudge.net/problem/POJ-1789 题意 n个车牌,长度固定为7,车牌与车牌间的距离为不同字母个数.问所有车牌形成一棵树的最小边权和是多少. 分析 最小生成树模板 ...

  7. poj 1789 kruscal水题

    继续水水题... 题目:http://poj.org/problem?id=1789 把车看成结点,车之间的距离看作权重就是一个图了,然后求最小生成树... 的确水题,但看题目花了挺长时间,不知道如果 ...

  8. poj 3522(最小生成树应用)

    题目链接:http://poj.org/problem?id=3522思路:题目要求最小生成树中最大边与最小边的最小差值,由于数据不是很大,我们可以枚举最小生成树的最小边,然后kruskal求最小生成 ...

  9. POJ - 1251(最小生成树.krustal)

    题目链接:http://poj.org/problem?id=1251 题目: Jungle Roads Time Limit: 1000MS   Memory Limit: 10000K Total ...

最新文章

  1. java中i++和++i与c里的区别
  2. python学习笔记-练手实例
  3. 延时队列实现的几种姿势
  4. Python实现简单的记账本功能
  5. 【游戏体验】Colour My World(让我的世界充满色彩)
  6. IntelliJ IDEA导包快捷键以及创建方法
  7. VirtualBox安装Windows XP——图解
  8. c4d怎么导入图片描图建模_巧用C4D的参考图学习角色人物建模(躯干)
  9. nios ii linux运行情况,在niosii上跑uClinux
  10. 不是吧,还有人不会做国庆头像小程序(可开通流量主,赚零花钱)
  11. 理解手机中的感应器模块:重力感应/光线感应/电子罗盘/陀螺仪模块功能
  12. 数学规划求解器lp_solve超详细教程
  13. input输入框禁用苹果系统键盘的return键
  14. 算法图解——广度优先搜索
  15. Nullpoint及其相关的报错
  16. Godaddy域名如何使用DNSPod做DNS解析
  17. python2G expanding 的用法, 最大回撤
  18. 支持中文的Rasa NLU训练服务部署---Rasa_NLU_Chi
  19. Cropping multiple images the same way
  20. 任意文件——固定到“开始“屏幕

热门文章

  1. leetcode @python 120. Triangle
  2. Python 全栈开发 -- 监控篇
  3. 使用libvirt技术监控虚拟机资源利用情况
  4. Lisp的本质(The Nature of Lisp)
  5. Delphi单元文件基本结构
  6. js动态添加的元素,动作绑定
  7. (16)Zynq FPGA SD控制器介绍
  8. mysql负载均衡分区_分区和负载均衡让MySQL更大更好
  9. linux编译测试代码,rtc在linux上的测试代码
  10. hive使用适用场景_Hive 中 Map Join 的适用场景:非等值连接