题目链接:
题意就是N个卡车的型号,一代一代的发展,两辆卡车的型号中 不同字母的个数代表着两辆卡车的距离,确定一个点。遍历到全部的点,使之这个距离最小。
非常明显最小生成树,稠密图。1次AC,水过
PS:厚颜无耻的先看了Discuss才做的,否则我也漏“.”。罪过罪过
#include#include #include #include #include const int N = 2001;const int INF = 1e8;using namespace std;int mapp[N][N];int n,ans;int dis[N];bool vis[N];char a[N][8];void init(){ memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis));}int SUM(int x,int y){ int sum = 0; for(int i = 0;i<7;i++) { if(a[x][i]!=a[y][i]) sum++; } return sum;}void Prim(){ ans = 0; int pos,minn; for(int i = 0;i mapp[pos][j]) dis[j] = mapp[pos][j]; } }}int main(){ while(cin>>n && n) { init(); for(int i = 0;i >a[i]; int i,j; for( i = 0;i