poj 1789 prim 图最小生成树算法
来源:互联网 发布:仓廪实而知礼节 编辑:程序博客网 时间:2024/06/06 06:33
#include <iostream>
using namespace std;
#define MAX 2000
int M[MAX][MAX];
#define INFINITY 100
int distance(char *A,char *B,int n)
{
int d=0;
for(int i=0;i<n;i++)
if( A[i] != B[i]) ++d;
return d;
}
int get_min(int *D,int n,char *CLOSE)
{
int min=INFINITY;
int minv=-1;
for(int i=0;i<n;i++)
{
if(CLOSE[i])
continue;
if(D[i]<min)
{
min=D[i];
minv=i;
}
}
return minv;
}
void deal(int n)
{
char C[MAX][7];
char CLOSE[MAX];
int D[MAX];
int sv=0;
int treeSize,treeSum;
treeSize=0;
treeSum=0;
memset(M,0,MAX*MAX*sizeof(int));
memset(CLOSE,0,MAX);
for(int i=0;i<n;i++)
cin>>C[i];
for(int i=0;i<n;i++)
{
D[i] = INFINITY;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i == j)
M[i][j] =0;
else
M[i][j] = distance(C[i],C[j],7);
//cout<<"M["<<i<<"]["<<j<<"]="<<M[i][j]<<endl;
}
}
D[sv]=0;
//prim
while(treeSize != n)
{
int now_v = get_min(D,n,CLOSE);
if(now_v == -1)
//cout<<"now_v is -1,tresSize"<<treeSize<<endl;
return ;
CLOSE[now_v]=1;
++treeSize;
treeSum += D[now_v];
//cout<<"now_v"<<now_v<<"D[now_v]"<<D[now_v]<<endl;
for(int j=0;j<n;j++)
{
if(now_v != j && !CLOSE[j])
{
if( M[now_v][j] < D[j])
D[j] = M[now_v][j];
}
}
}
cout<<"The highest possible quality is 1/"<<treeSum<<"."<<endl;;
}
int main()
{
int n;
while(cin>>n)
{
if(n == 0)
break;
deal(n);
}
}
in.dat
4
aaaaaaa
baaaaaa
abaaaaa
aabaaaa
0
using namespace std;
#define MAX 2000
int M[MAX][MAX];
#define INFINITY 100
int distance(char *A,char *B,int n)
{
int d=0;
for(int i=0;i<n;i++)
if( A[i] != B[i]) ++d;
return d;
}
int get_min(int *D,int n,char *CLOSE)
{
int min=INFINITY;
int minv=-1;
for(int i=0;i<n;i++)
{
if(CLOSE[i])
continue;
if(D[i]<min)
{
min=D[i];
minv=i;
}
}
return minv;
}
void deal(int n)
{
char C[MAX][7];
char CLOSE[MAX];
int D[MAX];
int sv=0;
int treeSize,treeSum;
treeSize=0;
treeSum=0;
memset(M,0,MAX*MAX*sizeof(int));
memset(CLOSE,0,MAX);
for(int i=0;i<n;i++)
cin>>C[i];
for(int i=0;i<n;i++)
{
D[i] = INFINITY;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i == j)
M[i][j] =0;
else
M[i][j] = distance(C[i],C[j],7);
//cout<<"M["<<i<<"]["<<j<<"]="<<M[i][j]<<endl;
}
}
D[sv]=0;
//prim
while(treeSize != n)
{
int now_v = get_min(D,n,CLOSE);
if(now_v == -1)
//cout<<"now_v is -1,tresSize"<<treeSize<<endl;
return ;
CLOSE[now_v]=1;
++treeSize;
treeSum += D[now_v];
//cout<<"now_v"<<now_v<<"D[now_v]"<<D[now_v]<<endl;
for(int j=0;j<n;j++)
{
if(now_v != j && !CLOSE[j])
{
if( M[now_v][j] < D[j])
D[j] = M[now_v][j];
}
}
}
cout<<"The highest possible quality is 1/"<<treeSum<<"."<<endl;;
}
int main()
{
int n;
while(cin>>n)
{
if(n == 0)
break;
deal(n);
}
}
in.dat
4
aaaaaaa
baaaaaa
abaaaaa
aabaaaa
0
0
上一篇:poj 1094 拓扑排序
下一篇:poj 2253
相关热门文章
- linux 常见服务端口
- 【ROOTFS搭建】busybox的httpd...
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- cpu %和load average是怎样的...
- 如何确定线程使用的端口...
- mysql整形数据类型插入0001数...
- weblogic集群下启动服务有一个...
- Ajax 权限验证
给主人留下些什么吧!~~
评论热议
- poj 1789 prim 图最小生成树算法
- POJ 1251 最小生成树prim算法
- POJ-1258 最小生成树 prim算法
- POJ 1258 -- 最小生成树(prim算法)
- poj 2485 prim算法最小生成树
- 最小生成树Prim算法 Highways POJ
- poj 1251 最小生成树 prim算法
- POJ 1789 Truck History 图论 prim算法 最小生成树
- 【最小生成树之prim算法】POJ 1789---Truck History
- poj--1789 Truck History(最小生成树Prim算法)
- POJ 1789 Truck History (Prim算法求最小生成树)
- POJ 1789 Truck History(最小生成树,prim算法)
- POJ-1789 Truck History(prim算法,最小生成树)
- poj 1789 Prim最小生成树
- POJ 1789 (最小生成树 prim)
- POJ 1789 prim求最小生成树
- poj 1789 prim 最小生成树
- poj 1789 最小生成树 prim kruskal
- 警告:xxxx 是 Sun 的专用 API,可能会在未来版本中删除
- Shell 脚本编程诀窍 第三章 变量
- Shell 脚本编程诀窍 第4章 通配符扩展
- ACE反应器(Reactor)模式
- poj 1094 拓扑排序
- poj 1789 prim 图最小生成树算法
- poj 2253
- poj 1125
- poj 2240
- poj 2488
- poj 1321
- poj 3009 - Curling 2.0
- poj 3083
- HDU 4403 A very hard Aoshu problem
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
替嫁娇妻偏执总裁宠上瘾
惹火甜妻老公大人宠上瘾
天价婚宠权少赖上瘾
一胎二宝总裁追妻上瘾
胎二宝总裁追妻上瘾
替嫁骄妻偏执总载宠上瘾
甜蜜隐婚老公大人宠上瘾
替嫁娇女偏执总栽宠上瘾
帝少爆宠甜妻霸上瘾
玄幻之无上人皇
皇兄把皇妹压在龙倚上御书房
人皇在上九州方圆
沪上皇
太上皇
玄幻之无上蛮皇
玄幻无上蛮皇
皇兄在上
吾皇在上
无上剑皇
沪上皇秦奋
漫威无上之皇
金融太上皇
泸上皇
皇兄把皇妹按在龙椅上坐
无上圣皇系统
无上仙皇
无上人皇
人皇在上
娶妻当娶太上皇
无上皇
皇弟乖乖上榻
无上神皇
人皇
吾皇
贞观太上皇
吾皇在上图片
广州粒上皇食品有限公司
太上皇需要给皇上下跪吗
凤皇在上
上皇
先皇