裸PRIM 没什么好说的
#include<iostream> using namespace std; #define MAXSIZE 2010 #define INF 100000 int map[MAXSIZE][MAXSIZE]; int dp[MAXSIZE][MAXSIZE]; int n; int vis[MAXSIZE]; int dis[MAXSIZE];//记录已有的树到该点的最短距离 int prim() { int i,j,ans=0; memset(vis,0,sizeof(vis)); //把第一个顶点加入集合 vis[1]=1; for(i=1;i<=n;i++) { dis[i]=map[1][i]; } dis[1]=0; for(i=1;i<n;i++)//循环n-1次 每次得到一个顶点 { //找一个与已生成的树相连 并且权值最小的顶点 int min=INF; int index=-1; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]!=0)//还没有加入集合并且 与现有的树有边相连 { if(min>dis[j]) { min=dis[j]; index=j; } } } //将找到的点加入已有的树 vis[index]=1; //将这条边的权值保存 ans+=min; //更新dis 数组 for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]!=0&&dis[j]>map[index][j]) dis[j]=map[index][j]; } } return ans ; } int main() { char truck[MAXSIZE][7]; // freopen("in.txt","r",stdin); while(true) { scanf("%d",&n); if(!n) break; memset(map,0,sizeof(map)); for(int i=1;i<=n;i++) { scanf("%s",truck[i]); for(int j=1;j<i;j++) { int tnum=0; for(int k=0;k<7;k++)//比较两个字符串之间有几个不同的字母 { if(truck[i][k]!=truck[j][k]) tnum++; } map[i][j]=map[j][i]=tnum; } } printf("The highest possible quality is 1/%d.\n",prim()); } return 0; }
相关推荐
综上所述,POJ1789题目是通过Prim算法解决与卡车历史相关的最优化问题,解题者提供了AC代码和解题报告,帮助读者理解算法的应用和问题的解决步骤。学习这个案例可以加深对Prim算法的理解,以及如何将其应用于实际...
标题中的“POJ 1789 最小生成树之prim算法”指的是一个在线编程竞赛题目,来源于普林斯顿开放在线课程(POJ)平台。该题目要求参赛者实现Prim算法,这是一种解决图论问题中寻找最小生成树的经典算法。最小生成树是在...
标签"POJ 2485 Highways Prim"进一步强调了这是POJ平台上的第2485题,主题与公路网络有关,且要求使用Prim算法。 从压缩包子文件的文件名称来看,有两个文件: 1. "POJ2485-Highways【Prim】.cpp":这是一个C++源...
标题 "POJ 1751 求最小生成树Prim算法(JAVA)" 提到的是一个编程挑战,涉及图论中的经典算法——Prim算法。在计算机科学中,Prim算法是用于寻找加权无向图的最小生成树的一种有效方法。最小生成树是一棵树形结构,...
综合以上信息,我们可以推测poj1789的问题可能要求参赛者设计一个程序,使用Prim算法来处理卡车运输路线的优化问题。程序可能需要读取一系列历史运输数据,构建一个代表卡车行驶路线的图,并找出连接所有运输点的...
Prim算法从一个顶点开始逐步添加边,而Kruskal算法则是按边的权重从小到大加入,确保不形成环路。 3. **拓扑排序**:对于有向无环图(DAG),拓扑排序可以得到一个顶点的线性顺序,使得对于每条有向边 `(u, v)`,`u...
* 最小生成树算法:最小生成树算法是指计算图的最小生成树的算法,如 prim、kruskal。 * 拓扑排序:拓扑排序是指计算图的拓扑排序的算法,如 poj1094。 * 二分图的最大匹配:二分图的最大匹配是指计算二分图的最大...
解题的关键在于正确实现Prim算法,并确保其运行效率足够高,以满足POJ系统的时限要求。通常可以采用优先队列(如二叉堆)来优化查找最小边的过程,以降低时间复杂度。 **AC代码分析:** 解题报告中的"POJ1258-Agri-...
《POJ3026-Borg Maze:BFS与Prim算法的应用解析》 在计算机科学领域,图论是解决问题的重要工具之一,而BFS(广度优先搜索)和Prim算法则是其中的两种经典算法。本篇文章将围绕北大POJ3026题目“Borg Maze”来探讨...
该题目结合了图论中的Prim算法与计算几何领域的知识,挑战参赛者的算法设计与实现能力。 【描述】题目要求构建一个空间站,具体来说是找到最小生成树,以连接一系列在外太空漂浮的模块。这里运用了Prim算法,这是一...
5. **贪心算法**:对于一些局部最优的选择可以导致全局最优解的问题,如霍夫曼编码、Prim算法和Kruskal算法等。 6. **图论算法**:包括图的遍历(深度优先搜索和广度优先搜索)、最短路径问题(Dijkstra算法、Floyd...
5. **Prim算法和Kruskal算法**:这两种都是解决最小生成树问题的算法,适用于无权图或带权重的图。Prim算法从一个节点开始,每次添加一条最小的边,直到连接所有节点;而Kruskal算法则是按边的权重从小到大排序,...
2. **最小生成树**:Prim算法和Kruskal算法,用于构建图的最小生成树(poj1789, poj2485, poj1258, poj3026)。 3. **网络流**:Max-flow算法,用于解决最大流问题(poj1094)。 4. **拓扑排序**:解决有向无环图的...
1. **Prim算法**:Prim算法是一种贪心策略,从一个初始顶点开始,逐步添加最便宜的边,使得每次添加的新边都连接到已有的最小生成树。这个过程持续到所有顶点都被包含在内。Prim算法在稠密图中效率较高,因为它每次...
【北大POJ中级-基本算法】解题报告与AC代码详解 北京大学的在线编程平台POJ(Problem Set of Peking University)是许多编程爱好者和学习者提升算法技能的重要平台。中级算法题目通常涵盖了一些基础但重要的算法...
- 最小生成树算法:如Prim算法和Kruskal算法,用于找出图中的最小生成树,如`poj1789, poj2485`。 - 拓扑排序:适用于有向无环图,用于确定任务的执行顺序,如`poj1094`。 - 二分图的最大匹配:如匈牙利算法,...
* 最小生成树算法:例如 Prim、Kruskal,例如 poj1789、poj2485、poj1258、poj3026。 * 拓扑排序:例如 poj1094。 * 二分图的最大匹配:例如 poj3041、poj3020。 * 最大流的增广路算法:例如 poj1459、poj3436。...
- POJ 1789、POJ 2485:Prim算法的具体应用。 - POJ 1258、POJ 3026:Kruskal算法的实际案例。 #### 字符串处理 - **题目示例**: - POJ 3349、POJ 3274:字符串匹配及Hash应用。 - POJ 2151、POJ 1840:利用...
* 最小生成树算法:prim、kruskal、POJ1789、POJ2485、POJ1258、POJ3026 * 拓扑排序:POJ1094 * 串算法:POJ1035、POJ3080、POJ1936 * 哈希表和二分查找等高效查找法:POJ3349、POJ3274、POJ2151、POJ1840、POJ2002...
1. **Prim算法**:从一个顶点开始,逐步添加边,每次添加的边连接两个不同的连通分量,并且具有当前未加入树的边中的最小权重,直到连接所有顶点为止。 2. **Kruskal算法**:首先对所有边按照权重从小到大排序,...