POJ 1789(最小生成树)
这题要把给的字符串变成边的权值
#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(最小生成树)相关推荐
- Kuskal/Prim POJ 1789 Truck History
题目传送门 题意:给出n个长度为7的字符串,一个字符串到另一个的距离为不同的字符数,问所有连通的最小代价是多少 分析:Kuskal/Prim: 先用并查集做,简单好写,然而效率并不高,稠密图应该用Pr ...
- poj 1789 Truck History(最小生成树 prim)
题目:http://poj.org/problem?id=1789 大意:每个卡车都有自己的编号,由七位字母组成 d(to,td) is the distance of the types指t0 和 ...
- (最小生成树)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: 多组数据. ...
- POJ - 1789 Truck History (最小生成树)
https://vjudge.net/problem/POJ-1789 题意 n个车牌,长度固定为7,车牌与车牌间的距离为不同字母个数.问所有车牌形成一棵树的最小边权和是多少. 分析 最小生成树模板 ...
- poj 1789 kruscal水题
继续水水题... 题目:http://poj.org/problem?id=1789 把车看成结点,车之间的距离看作权重就是一个图了,然后求最小生成树... 的确水题,但看题目花了挺长时间,不知道如果 ...
- poj 3522(最小生成树应用)
题目链接:http://poj.org/problem?id=3522思路:题目要求最小生成树中最大边与最小边的最小差值,由于数据不是很大,我们可以枚举最小生成树的最小边,然后kruskal求最小生成 ...
- POJ - 1251(最小生成树.krustal)
题目链接:http://poj.org/problem?id=1251 题目: Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total ...
最新文章
- java中i++和++i与c里的区别
- python学习笔记-练手实例
- 延时队列实现的几种姿势
- Python实现简单的记账本功能
- 【游戏体验】Colour My World(让我的世界充满色彩)
- IntelliJ IDEA导包快捷键以及创建方法
- VirtualBox安装Windows XP——图解
- c4d怎么导入图片描图建模_巧用C4D的参考图学习角色人物建模(躯干)
- nios ii linux运行情况,在niosii上跑uClinux
- 不是吧,还有人不会做国庆头像小程序(可开通流量主,赚零花钱)
- 理解手机中的感应器模块:重力感应/光线感应/电子罗盘/陀螺仪模块功能
- 数学规划求解器lp_solve超详细教程
- input输入框禁用苹果系统键盘的return键
- 算法图解——广度优先搜索
- Nullpoint及其相关的报错
- Godaddy域名如何使用DNSPod做DNS解析
- python2G expanding 的用法, 最大回撤
- 支持中文的Rasa NLU训练服务部署---Rasa_NLU_Chi
- Cropping multiple images the same way
- 任意文件——固定到“开始“屏幕