poj1789
来源:互联网 发布:网络买彩票 编辑:程序博客网 时间:2024/05/22 07:55
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
#define maxn 2002
#define inf 0x7fffffff
char s[maxn][8];
//int map[maxn][maxn];
//裸最小生成树
int dis(char s1[],char s2[])
{
int sum=0;
for(int i=6;1+i;i--)
{
sum+=(s1[i]!=s2[i]);
}
return sum;
}
struct Code{int x;int y;int w;}node[maxn*maxn/2+10];
bool cmp(struct Code A,struct Code B)
{
return A.w<B.w;
}
int fa[maxn*maxn/2];
int find(int x)
{
return x==fa[x]?x:(fa[x]=find(fa[x]));
}
int main()
{
int n;
while(1==scanf("%d",&n)&&n)
{
for(int i=1;i<=n;i++)
{scanf("%s",s[i]);fa[i]=i;}
int num=0;
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
{
//map[i][j]=map[j][i]=dis(s[i],s[j]);
node[num].w=dis(s[i],s[j]);
node[num].x=i;
node[num++].y=j;
}
sort(node,node+num,cmp);
int ans=0;
for(int i=0;i<num;i++)
{
int a=node[i].x;
int b=node[i].y;
int ta=find(a);
int tb=find(b);
if(ta==tb)
{
continue;
}
else
{
ans+=node[i].w;
if(ta<tb)
{
fa[tb]=ta;
}
else fa[ta]=tb;
}
}
printf("The highest possible quality is 1/%d.\n",ans);
}
return 0;
}
- poj1789
- poj1789
- poj1789
- poj1789
- poj1789
- POJ1789
- poj1789
- poj1789
- poj1789
- poj1789
- POJ1789
- POJ1789
- poj1789
- poj1789 Prim
- poj1789--prim
- poj1789(prim)
- prim poj1789
- poj1789 prim
- OK6410学习之裸板LED程序及RAM烧录
- 彻底征服<<指针数组和指向数组的指针>>
- 降低改版带来的风险
- poj 2200 A Card Trick(模拟)
- linux内核定时器
- poj1789
- 黑马程序员 Java面向对象——String类 StringBuffer类 StringBuiler类
- HDU 1013 Digital Roots
- GCC 参数
- poj3991(括号匹配-贪心)
- java -Xms -Xmx -XX:PermSize -XX:MaxPermSize
- ios 创建静态库
- linux下itimer定时器的应用
- POJ 1091 跳蚤 解题报告(2014携程第一场A题,聪明的猴子)(容斥原理)