poj 1879 Truck History
来源:互联网 发布:centos安装raid驱动 编辑:程序博客网 时间:2024/06/05 16:16
本题链接:点击打开链接
题目大意:
输入n表示卡车辆数,输入每辆卡车编号,即长度为7的字符串,每辆卡车编号均可由其它类型编号衍生过来,求由其中一辆衍生出其它所有的最小衍生次数(有一个字符不同就需衍生一次)。
解题思路:
本题可以看做求最小生成树的问题,关键是图的构建,把每两辆车衍生次数作为权值,然后使用prime算法求解最小生成树,具体请参见代码:
#include<stdio.h>#include<string.h>#define INF 0xffffffint map[2020][2020];int mark[2020],lowcost[2020];char str[2020][10];void prime(int n){int sum=0;int vir=1;memset(mark,0,sizeof(mark));for(int i=1;i<=n;i++)if(i!=vir)lowcost[i]=map[vir][i];lowcost[vir]=0;mark[vir]=1;for(int i=2;i<=n;i++){int min=INF;for(int j=1;j<=n;j++){if(!mark[j]&&lowcost[j]<min){min=lowcost[j];vir=j;}}mark[vir]=1;sum+=min;for(int k=1;k<=n;k++){if(!mark[k]&&lowcost[k]>map[vir][k]){lowcost[k]=map[vir][k];}}}printf("The highest possible quality is 1/%d.\n",sum);}int main(){int n;while(scanf("%d",&n),n){memset(map,0,sizeof(map));for(int i=1;i<=n;i++)scanf("%s",str[i]);for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){for(int k=0;k<7;k++){if(str[i][k]!=str[j][k]){map[i][j]++;map[j][i]++;}}}}prime(n);}return 0;}
0 0
- poj 1879 Truck History
- POJ 1789 Truck History
- POJ 1789 Truck History
- POJ 1789 Truck History
- poj 1789 Truck History
- poj 1789 Truck History
- Poj 1789 Truck History
- poj 1789 Truck History
- poj 1789 Truck History
- poj 1789 Truck History
- poj 1789 Truck History
- POJ-1789-Truck History
- poj-1789-Truck History
- POJ 1789 Truck History
- poj 1789 Truck History
- POJ 1789 Truck History
- POJ 1789 Truck History
- POJ 1789 Truck History
- Spring注解详解
- Matlab常用函数--gradient
- maven项目配置文件路径的修改
- 钣喷
- RadioButton不能切换问题
- poj 1879 Truck History
- MFC自动获取网络地址函数实现----广播地址,网关,子网掩码
- java.util.concurrent介绍
- UVA——10130SuperSale
- zoj 3175 Number of Containers 分块加速
- Caffe 源码的修改(用于车辆的定位)
- Java 静态变量、非静态代码块、构造函数的执行顺序
- 递归无限极分类
- 浅谈spring中的ioc、工厂模式、单例模式