POJ 1789 -- Truck History(Prim)
2024-09-05 07:32:54
POJ 1789 -- Truck History
Prim求分母的最小。即求最小生成树
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = + ;
const int INF = ;
int n;//有几个卡车
char str[maxn][];
int d[maxn];//记录编号的数值
int Edge[maxn][maxn];
int dist[maxn];
void prim()
{
int sum=;
//加入源点
dist[] = -;
for(int i=;i<n;i++)
{
dist[i] = Edge[][i];
} for(int i=;i<n;i++)//依次加入n-1条边
{
int min = INF,pos;
for(int j=;j<n;j++)//找出最小的一条
{
if(min>dist[j] && dist[j]!=-)
{
min = dist[j];pos = j;
}
}
//将pos加入
dist[pos] = -;sum+=min;
//进行路径的更新
for(int k=;k<n;k++)
{
if(dist[k] > Edge[pos][k])
dist[k]=Edge[pos][k];
}
}
cout<<"The highest possible quality is 1/"<<sum<<"."<<endl;
} int main()
{
while(cin>>n && n)
{
for(int i=;i<n;i++)
{
cin>>str[i];
}
for(int i=;i<n;i++)
{
int num=;
for(int k=;k<;k++)
num += (int)(str[i][k] - 'a');
d[i] = num;
}
memset(Edge,,sizeof(Edge));
for(int i=;i<n;i++)
{
for(int j=i+;j<n;j++)
{
int temp = ;
for(int k=;k<;k++)
{
temp += str[i][k]!=str[j][k];
}
Edge[i][j] = Edge[j][i] = temp;
}
}
memset(dist,INF,sizeof(dist));
prim(); } return ;
}
最新文章
- xpath提取多个标签下的text
- 关于Linux下转换oracle字符集
- string,stringbuilder,stringbuffer用法
- 深入理解Java之泛型
- 阿里巴巴分布式服务框架dubbo学习笔记
- Voreen (一) GPU Raycast主流程
- mybatis generator使用(基于maven)
- 組裝工廠設置IQC的目的
- eclipse svn2.0.0插件 手动安装方法
- zimbra启用SMTP认证并绑定认证登录和发件人
- ArrayList implementation
- Swift.Operator-and-Items-in-Swift(1)
- (Prim算法)codeVs 1078 最小生成树
- zabbix3.4.7使用过程中常见错误
- [bcc32 Error] ws2def.h(231): E2238 Multiple declaration for &#39;sockaddr&#39;
- Vue.js之组件系统
- 设置ssh key后push为什么还要输入用户名和密码
- sublime text 3 常见问题总结 pyv8
- ORACLE 根据根节点查所有上层节点
- centos7 kdump.service启动失败的解决方法
热门文章
- 微信小程序配置动态title
- 前端基础(三):JavaScript
- etcd安装和简单使用
- udp单播,广播,多播实现(ReceiveFromAsync,SendToAsync)
- visual studio 和visual studio code 的区别是什么?
- python_函数参数
- Java笔记(第六篇-网络通信)
- Java笔记(基础第四篇)
- Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) A. CME
- Codeforces Round #588 (Div. 2) D. Marcin and Training Camp(思维)