poj-1789 Truck History
2015-01-27 19:48
295 查看
http://poj.org/problem?id=1789
题意理解就是裸的MST
题意理解就是裸的MST
#include<cstdio> #include<iostream> #include<cstring> #define INF 0x3f3f3f3f using namespace std; char str[2010][10]; int dis[2010],edge[2010][2010]; bool vis[2010]; int m,ans; int cmp(int x,int y) { int cnt=0; for(int i=0;i<7;i++) { if(str[x][i]!=str[y][i]) cnt++; } return cnt; } int prim() { int u=0,tmp;ans = 0; memset(vis,false,sizeof(vis)); for(int i=0;i<m;i++) { dis[i]=edge[u][i]; } vis[u]=1; for(int j=1;j<m;j++) { tmp=INF; for(int i=1;i<m;i++) { if(!vis[i] && dis[i]<tmp) { tmp = dis[i]; u = i; } } vis[u]=1; ans+=tmp; for(int i=0;i<m;i++) { if(!vis[i] && edge[u][i]<dis[i]) dis[i]=edge[u][i]; } } return ans; } int main() { while(scanf("%d",&m)!=EOF) { if(m==0) break; for(int i=0;i<m;i++) for(int j=0;j<m;j++) { if (i == j) edge[i][j] = 0; else edge[i][j] = INF; } for(int i=0;i<m;i++) scanf("%s",str[i]); for(int i=0;i<m;i++) { for(int j=0;j<m;j++) { if(i==j) edge[i][j]=edge[j][i]=0; else edge[i][j]=edge[j][i]=cmp(i,j); } } printf("The highest possible quality is 1/%d.\n",prim()); } return 0; }
相关文章推荐
- POJ1789--Truck History--最小生成树
- poj--1789--Truck History(prim)
- POJ 1789 Truck History
- poj 1789 Truck History(prim算法)
- POJ 1789 Truck History
- POJ--1789 Truck History【prim】
- poj 1789 Truck History(最小生成树 Prim)
- POJ 1789 Truck History 最小生成树 KRUSKAL算法
- POJ 1789 Truck History
- poj1789 Truck History
- Truck History - POJ 1789 最小生成树
- POJ-1789 Truck History(prim算法,最小生成树)
- poj 1789 Truck History
- POJ1789:Truck History(Prim算法)
- 【POJ】1789 - Truck History(克鲁斯塔尔)
- POJ 1789--Truck History(最小生成树)
- POJ 1789 Truck History (Kruskal最小生成树) 模板题
- POJ1789 Truck History(Prim最小生成树)
- poj 1789 Truck History(Prim)(中等)
- POJ 1789 Truck History