Truck History poj1789
来源:互联网 发布:java httputils 编辑:程序博客网 时间:2024/05/16 18:31
题目不难,就是求一个最小生成树,没什么好说的。因为很久没写并查集了,所以写了个Kruskal的代码,就当练笔吧
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct edge{int u,v,w;bool operator<(const edge &t)const{return w<t.w;}}p[2000000];char truck[2005][8];int set[2005],rank[2005];int n;int dist(int i,int j){int ans=0;for(int k=0;k<7;k++)if(truck[i][k]!=truck[j][k])ans++;return ans;}int find(int x){int i,j,r;r=x;while(set[r]!=r)r=set[r];i=x;while(set[i]!=r){j=set[i];set[i]=r;i=j;}return r;}bool merge(int x,int y){x=find(x);y=find(y);if(x==y)return false;if(rank[x]<rank[y])set[x]=y;else{set[y]=x;if(rank[x]==rank[y])rank[x]++;}return true;}int main(){int i,j,k;int sum;while(scanf("%d",&n),n){for(i=1;i<=n;i++)scanf("%s",truck[i]);k=0;for(i=1;i<=n;i++)for(j=i+1;j<=n;j++){p[k].u=i;p[k].v=j;p[k].w=dist(i,j);k++;}sort(p,p+k);for(i=1;i<=n;i++){set[i]=i;rank[i]=1;}sum=0;for(i=0;i<k;i++)if(merge(p[i].u,p[i].v))sum+=p[i].w;printf("The highest possible quality is 1/%d.\n",sum);}return 0;}
- POJ1789 Truck History
- Truck History(POJ1789)
- poj1789 - Truck History
- Truck History poj1789
- poj1789 Truck History
- poj1789--Truck History
- poj1789 Truck History
- poj1789 Truck History(Prim)
- POJ1789 Truck History【Prim】
- POJ1789--Truck History
- poj1789 Truck History
- POJ1789 Truck History
- POJ1789 Truck History
- POJ1789-Truck History .
- POJ1789 Truck History
- POJ1789 Truck History
- POJ1789 Truck History
- POJ1789 Truck History
- 返回动态内存--malloc
- KDE调试NS2-2
- 电子信息、通信、电类专业将会遇到的面试题大全的部分答案
- 10-14Asp Cookie和Session (今天是开学以后熬夜做作业第一天啊、觉得这块很难理解)
- Android中Animation动画的介绍及用法
- Truck History poj1789
- 学电气的以后要用的,电力系统,电子,通信
- android 线程池对象-ThreadPoolExecutor
- linux 批量转换UTF8到GB2312并处理UTF8的BOM标记
- Backbone 或 jQuery 出错,异常:Uncaught TypeError: object is not a function
- hdu 4277 USACO ORZ
- 关于大学的专业学习的期望与目标
- 求职那些事十一
- 内存动态分配与释放