| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
从一开始kruskal就T学了prim还T就是因为用了map!!!T的同志们注意了//prim(稠密图)AC!
//code by WNSGB
//#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2000+10;
int n,w,ans=0;
int a[maxn][maxn],d[maxn],vis[maxn];
char s[maxn][10];
//map<int,string>type;
void prim(){
int p;
for(int i=2;i<=n;i++){
int INF=1e9;
for(int j=2;j<=n;j++)
if(!vis[j]&&d[j]<INF){
p=j;
INF=d[j];
}
vis[p]=1;
ans+=d[p];
for(int j=2;j<=n;j++){
if(!vis[j]){
d[j]=min(d[j],a[p][j]);
}
}
}
}
int main(){
while(scanf("%d",&n)&&n!=0){
//memset(d,0,sizeof(d));
memset(vis,0,sizeof(vis));
memset(a,127,sizeof(a));
//memset(type,0,sizeof(type));
//type.clear();
//scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",s[i]);
//type[i]=s;
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
w=0;
for(int k=0;k<=6;k++){
if(s[i][k]!=s[j][k])
w++;
}
a[i][j]=w;
a[j][i]=w;
}
}
for(int i=1;i<=n;i++)d[i]=a[1][i];
ans=0;
d[1]=0,vis[1]=1;
prim();
printf("The highest possible quality is 1/%d.\n",ans);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator