计算整个汽车演化过程中所要改变的最少的字符数。改变的字符数的计算方式为1-7位不同位的个数。

代码如下:

#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;int N, pos, set[2005];char s[2005][10];struct Node
{int x, y, diff;bool operator < (Node t) const{return diff < t.diff;}
}e[4000005];int diff(int x, int y)
{int cnt = 0;for (int i = 0; i < 7; ++i) {if (s[x][i] != s[y][i]) {++cnt;}}return cnt;
}int find(int x)
{return set[x] = x == set[x] ? x : find(set[x]);
}void merge(int x, int y)
{set[x] = y;
}int main()
{int a, b, ans, cnt;while (scanf("%d", &N), N) {pos = ans = cnt = 0;for (int i = 1; i <= N; ++i) {scanf("%s", s[i]); set[i] = i;}for (int i = 1; i <= N; ++i) {for (int j = i+1; j <= N; ++j) {      ++pos;e[pos].x = i, e[pos].y = j;e[pos].diff = diff(i, j);;}}sort(e+1, e+1+pos);for (int i = 1; i <= pos; ++i) {a = find(e[i].x), b = find(e[i].y);if (a != b) {printf("%d %d\n", e[i].x, e[i].y);++cnt;merge(a, b);ans += e[i].diff;if (cnt == N-1) {break;}}}printf("The highest possible quality is 1/%d.\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/Lyush/archive/2012/07/01/2572080.html

POJ-1789 Truck History 最小生成树相关推荐

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

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

  2. Kuskal/Prim POJ 1789 Truck History

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

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

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

  4. POJ 1789 Truck History

    最小生成树问题. 给你一组字母序列,问你最有可能的演变,也就是把全部的序列连通所花费最小. 每次派生的花费 取决于两个字符串上 不同的字母个数. 于是两两算出花费,然后Kruskal算最小. #inc ...

  5. 【POJ】【最小生成树】1789 Truck History

    1 思路 题目链接. 最小生成树(MST)问题. 2 代码 代码来自宇宙吾心博客. #include <iostream> #include <limits> #include ...

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

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

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

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

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

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

  9. poj1789 Truck History(最小生成树)

    2018-3-24 简单的最小生成树问题. 题目大意是: 给你n个字符串,他们的distance就是串中不同字符的个数,要求算出所有串的distance's 最小 sum : #include< ...

最新文章

  1. 读样章、写评语,即有机会获赠《编程大师访谈录》!
  2. [转载] 唐浩民评点曾国藩家书(上)——一个不同凡庸的乡村农民
  3. 边缘计算架构_多接入边缘计算框架与参考架构简介
  4. mac安装完python怎么打开-MAC中怎么安装python
  5. 【BLE MIDI】推荐一个 Android 平台开源 MIDI 软件 MidiSheetMusic ( 相关资料 | Android Studio 中导入 Eclipse 源码 )
  6. DevExpress第三方控件汉化的全部代码和使用方法
  7. 计算机网络【wireshark抓包分析】
  8. 基于Session的国际化实现
  9. mysql 分词搜索_打造一个蓝奏云网盘搜索引擎
  10. Windows下动态库的制作与使用
  11. Python——常见数据类型的调试笔记(“如何通过Debug信息判断数据类型”)
  12. 仿51 job 省市二级联动
  13. 遗传算法的C语言设计
  14. 反垃圾邮件黑名单申诉工作相关步骤说明
  15. 图解通信原理与案例分析-2:如何用电信号来表示和传输0和1,远远比我们想象的要复杂得多
  16. DRAG DROP
  17. Python列表练习——用户管理
  18. 徐闻县珊瑚礁保护区可持续发展策略
  19. PageOffice国产版(统信UOS操作系统)与Window版的区别
  20. python 英语词典_使用Python的英语词典应用程序

热门文章

  1. java filter 注解_Spring常用注解及自定义Filter的实现
  2. 喜报丨神策数据再获北京市广播电视局优秀推荐项目
  3. nodejs链接kafka示例(producer、consumer)
  4. 二十六个月Android学习工作总结
  5. redmine 邮件发送问题修复
  6. 数据挖掘应用现状与产品分析
  7. how to write academic english well?
  8. 如何做波动率的分析呢?
  9. imperial college application status check portal
  10. 剑桥的商学院硕士的创业项目找我做tech lead,稳得一批