POJ 1789最小生成树(kruscal算法)
2013-12-16 22:01
274 查看
这题其实是密的,比较适合用Prim算法,但是我现在想练习一下自己的并查集运用,所以只用了kruscal算法……
题意就是字符串中,串与串比较,其中一串是拿来做参考,其他如果其中的字符改变最小,就是最佳的……就是代码继承……
比如:
第一行作为参考,第二行只用改一个b字母就和第一行一样了,第二行也是只用改一个字母,第三行也是,所以总和为3……
题意就是字符串中,串与串比较,其中一串是拿来做参考,其他如果其中的字符改变最小,就是最佳的……就是代码继承……
比如:
4 aaaaaaa baaaaaa abaaaaa aabaaaa
第一行作为参考,第二行只用改一个b字母就和第一行一样了,第二行也是只用改一个字母,第三行也是,所以总和为3……
#include <bitset> #include <iostream> #include <fstream> #include <algorithm> #include <cmath> #include <utility> #include <deque> #include <vector> #include <list> #include <queue> #include <string> #include <complex> #include <cstring> #include <map> #define pi acos(-1.0) using namespace std; typedef long long ll; char a[2002][8]; int f[2002]; struct abc { int u,v; int len; }e[2002*2002]; bool cmp(abc a,abc b) { return a.len<b.len; } int get(const char *x,const char *y) { int i,sum=0; for(i=0;i<7;i++) if(x[i]!=y[i]) sum++; return sum; } int find(const int p) { return f[p]==p?p:f[p]=find(f[p]); } int main() { int n; while(scanf("%d",&n)&&n) { int i,j,k=0,a1,b1,sum=0; getchar(); for(i=0;i<n;i++) { gets(a[i]); f[i]=i; } for(i=0;i<n;i++) for(j=i+1;j<n;j++) { e[k].u=i; e[k].v=j; e[k++].len=get(a[i],a[j]); } sort(e,e+k,cmp); for(i=0,j=0;i<k&&j<n-1;i++) { a1=find(e[i].u); b1=find(e[i].v); if(a1==b1) continue; f[a1]=b1; sum+=e[i].len; j++; } printf("The highest possible quality is 1/%d.\n",sum); } return 0; }
相关文章推荐
- poj 1789 最小生成树 kruskal 并查集
- POJ 1789-Truck History 最小生成树 Kruskal算法
- poj1789最小生成树
- POJ 1789 Truck History(kuangbin带你飞 专题六:最小生成树)
- Truck History POJ - 1789 最小生成树Prim
- poj 1789 Truck History 最小生成树模板题
- POJ1789,Truck History,最小生成树,Prim
- poj 1789 Truck History 最小生成树
- (kruscal12.1.1)POJ 2421 Constructing Roads(使用kruscal算法来生成最小生成树&&计算最小带权路径和)
- POJ1789 Truck History(prim最小生成树)
- POJ-1789 Truck History(prim算法,最小生成树)
- POJ-1789 Truck History 裸最小生成树
- poj1789 Truck History 最小生成树,kruskal
- poj 1789 Truck History(最小生成树)
- poj 1789 Truck History 最小生成树
- POJ 1789 Truck History prim的最小生成树题解
- poj1789 Truck History(最小生成树)
- poj 1789 Truck History (最小生成树)
- poj 1789 Truck History(最小生成树 Prim)
- poj 1789(最小生成树)