POJ 1789
来源:互联网 发布:中级经济师题库软件 编辑:程序博客网 时间:2024/06/07 14:47
【题目分析】
kruskal。
【代码】
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n,f[2001];char s[2001][10];int rank[4000001];int fr[4000001],to[4000001],w[4000001],en=1;inline void add(int a,int b,int c){fr[en]=a;to[en]=b;w[en]=c;en++;}inline bool cmp(int a,int b){return w[a]<w[b];}inline void init(){ en=1;// scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%s",s[i]); for (int i=1;i<n;++i) for (int j=i+1;j<=n;++j) { int tmp=0; for (int k=0;k<7;++k) if (s[i][k]!=s[j][k]) tmp++; add(i,j,tmp); } for (int i=1;i<=n;++i) f[i]=i; for (int i=1;i<en;++i) rank[i]=i; sort(rank+1,rank+en,cmp);}inline int gf(int k){ if (f[k]==k) return k; else return f[k]=gf(f[k]);}inline int kru(){ int cnt=0,ret=0; for (int i=1;i<en;++i) { int lf=gf(fr[rank[i]]),rf=gf(to[rank[i]]); if (rf!=lf) { ret+=w[rank[i]]; cnt++; if (cnt==n-1) return ret; f[lf]=rf; } }}int main(){ while (scanf("%d",&n)!=EOF&&n) { init(); printf("The highest possible quality is 1/%d.\n",kru()); }}
0 0
- POJ 1789
- POJ 1789
- poj 1789
- poj 1789
- POJ 1789
- poj 1789
- POJ 1789
- POJ 1789
- poj.1789
- POJ 1789
- poj-1789
- poj 1789
- poj 1789
- POJ 1789
- poj 1789
- POJ-1789
- POJ 1789
- POJ 1789
- Gym 100851AAdjustment Office 解题报告
- Six Degrees of Cowvin Bacon(最短路)
- windows server 2008R2自动关机解决方法
- 总结六条对我们学习Linux系统有用的忠告
- 也写一个变色方块的游戏
- POJ 1789
- 南京某外企开发面经
- Pessimistic Locking ——悲观锁
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- Oracle 11gR2 RAC网络配置,更改public ip、vip和scanip
- PetShop中异步消息处理机制
- POJ 2282
- react-redux-universal-hot-example错误
- 安装jumpserver开源堡垒机