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 |
又忘了添#include<string>结果CE两次……算是贡献了。 #include<iostream> #include<string> #include<algorithm> using namespace std; int father[2000]; struct road{ int from,to; int dist; } roads[4000000]; string data[2000]; int searchfather(int i){ if (father[i]==i) return i; return father[i]=searchfather(father[i]); } bool cmp(road a,road b){ return a.dist<b.dist; } int main (void){ int n,rd; cin>>n; while (n!=0){ for (int i=0;i<n;++i){ father[i]=i; cin>>data[i]; } int rd=0; for (int i=0;i<n-1;++i) for (int j=i+1;j<n;++j){ roads[rd].from=i; roads[rd].to=j; roads[rd].dist=0; for (int k=0;k<7;++k) roads[rd].dist+=data[i][k]==data[j][k]?0:1; ++rd; } sort(&roads[0],&roads[rd],cmp); int pt=0,ct=0,tot=0; while (pt!=n-1){ while (searchfather(roads[ct].from)==searchfather(roads[ct].to)) ++ct; father[searchfather(roads[ct].from)]=searchfather(roads[ct].to); tot+=roads[ct].dist; ++pt; ++ct; } cout<<"The highest possible quality is 1/"<<tot<<"."<<endl; cin>>n; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator