POJ-1789 Truck History 最小生成树
计算整个汽车演化过程中所要改变的最少的字符数。改变的字符数的计算方式为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 最小生成树相关推荐
- poj 1789 Truck History(最小生成树 prim)
题目:http://poj.org/problem?id=1789 大意:每个卡车都有自己的编号,由七位字母组成 d(to,td) is the distance of the types指t0 和 ...
- Kuskal/Prim POJ 1789 Truck History
题目传送门 题意:给出n个长度为7的字符串,一个字符串到另一个的距离为不同的字符数,问所有连通的最小代价是多少 分析:Kuskal/Prim: 先用并查集做,简单好写,然而效率并不高,稠密图应该用Pr ...
- POJ - 1789 Truck History (最小生成树)
https://vjudge.net/problem/POJ-1789 题意 n个车牌,长度固定为7,车牌与车牌间的距离为不同字母个数.问所有车牌形成一棵树的最小边权和是多少. 分析 最小生成树模板 ...
- POJ 1789 Truck History
最小生成树问题. 给你一组字母序列,问你最有可能的演变,也就是把全部的序列连通所花费最小. 每次派生的花费 取决于两个字符串上 不同的字母个数. 于是两两算出花费,然后Kruskal算最小. #inc ...
- 【POJ】【最小生成树】1789 Truck History
1 思路 题目链接. 最小生成树(MST)问题. 2 代码 代码来自宇宙吾心博客. #include <iostream> #include <limits> #include ...
- (最小生成树)Truck History --POJ -- 1789
链接: http://poj.org/problem?id=1789 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2213 ...
- 【POJ - 1789】【ZOJ - 2158】【SCU - 1832】Truck History (最小生成树)
题干: Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used f ...
- poj 1789 TruckHistory 最小生成树 Kruskal、Prim
题意: n个车牌号,刚开始只有一个车牌,其他车牌都是由一个车牌直接或间接产生,一个车牌到另一个车牌的产生权值是它们之间的数字不同的个数,问产生的最小的边权和,即求最小生成树. Input: 多组数据. ...
- poj1789 Truck History(最小生成树)
2018-3-24 简单的最小生成树问题. 题目大意是: 给你n个字符串,他们的distance就是串中不同字符的个数,要求算出所有串的distance's 最小 sum : #include< ...
最新文章
- 读样章、写评语,即有机会获赠《编程大师访谈录》!
- [转载] 唐浩民评点曾国藩家书(上)——一个不同凡庸的乡村农民
- 边缘计算架构_多接入边缘计算框架与参考架构简介
- mac安装完python怎么打开-MAC中怎么安装python
- 【BLE MIDI】推荐一个 Android 平台开源 MIDI 软件 MidiSheetMusic ( 相关资料 | Android Studio 中导入 Eclipse 源码 )
- DevExpress第三方控件汉化的全部代码和使用方法
- 计算机网络【wireshark抓包分析】
- 基于Session的国际化实现
- mysql 分词搜索_打造一个蓝奏云网盘搜索引擎
- Windows下动态库的制作与使用
- Python——常见数据类型的调试笔记(“如何通过Debug信息判断数据类型”)
- 仿51 job 省市二级联动
- 遗传算法的C语言设计
- 反垃圾邮件黑名单申诉工作相关步骤说明
- 图解通信原理与案例分析-2:如何用电信号来表示和传输0和1,远远比我们想象的要复杂得多
- DRAG DROP
- Python列表练习——用户管理
- 徐闻县珊瑚礁保护区可持续发展策略
- PageOffice国产版(统信UOS操作系统)与Window版的区别
- python 英语词典_使用Python的英语词典应用程序