FOJ--英语考试(最小生成树)
来源:互联网 发布:新疆广电网络缴费方式 编辑:程序博客网 时间:2024/06/06 15:42
英语考试
(题目链接)
就是一个最小生成树问题!
先把所有的路径(汉明)打出来存起来
然后走最小生成树!!!
#include<stdio.h>#include<iostream>#include<string.h>#include<queue>using namespace std;const int inf=0x3f3f3f3f;char s[1010][15];int map[1010][1010];bool book[1010];int dis[1010];int n,m,w;int hanming(char a[],char b[]){ int sum=0; for(int i=0;i<m;i++) { if(a[i]!=b[i]) { sum++; } } return sum*w;}int main(){ while(~scanf("%d%d%d",&n,&m,&w)) { int count=0,sum=0; for(int i=1;i<=n;i++) { dis[i]=inf; } for(int i=1;i<=n;i++) { scanf("%s",s[i]); } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { map[i][j]=hanming(s[i],s[j]); if(map[i][j]>m) map[i][j]=m; } } memset(book,0,sizeof(book)); for(int i=1;i<=n;i++)//初始化 dis[i]=map[1][i]; book[1]=1; count++; sum=m; while(count<n) { int min=inf; int dian; for(int i=1;i<=n;i++) { if(!book[i]&&dis[i]<min) { min=dis[i]; dian=i; } } book[dian]=1;count++;sum+=dis[dian]; for(int k=1;k<=n;k++) { if(book[k]==0&&dis[k]>map[dian][k]) dis[k]=map[dian][k]; } } printf("%d\n",sum); }}
阅读全文
0 0
- FOJ--英语考试(最小生成树)
- 英语考试 (最小生成树)
- 英语考试FZU(最小生成树)
- FZU2254 英语考试 最小生成树
- 【最小生成树--思维】fzu 2254 英语考试;
- FZU 2254 英语考试 (最小生成树)(福州大学第十四届程序设计竞赛)
- FZU2254 英语考试(最小生成树,Prim)(福州大学第十四届程序设计竞赛)
- Fzu 2254 英语考试【思维+最小生成树】好题~
- FOJ 1096 QS Network (最小生成树kruskal)
- 英语考试
- 英语考试
- 英语考试
- foj 2197 最小花费
- 最小生成树(Prim)(普利姆最小生成树)
- 最小方差生成树(最小生成树)
- 最小生成树(prim)
- 最小生成树(Kruskal)
- HDU1863(最小生成树)
- 我的第一个minigui程序
- 移动端数据接口返回数据格式(下)
- iterm2 主题配置
- Vim技能修炼教程(16)
- Windows7下安装配置TestLink
- FOJ--英语考试(最小生成树)
- SpringBoot_集成MyBatis(XML方式)
- 解决maven出现Missing artifact com.manyit:javaoa-base:war:1.3.0-SNAPSHOT的问题
- 直接插入排序算法-不设置哨兵版
- IntelliJ IDEA2017.1.4正式版gradle依赖总是报错问题之一
- 搜索引擎相关架构和技术点梳理
- ListPopupWindow,PopupMenu
- java与C语言跨平台原理
- 【代码笔记】iOS-只让textField使用键盘通知