Prim算法求最大权,POJ(2485)
2024-09-29 08:26:48
题目链接:http://poj.org/problem?id=2485
解题报告:
这里有一点要注意的是,第一个点时,dis数组还没有初始化,还全部为inf。第一次来到更新权时,才把邻接矩阵的数据存到dis中。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <memory.h>
#include <algorithm> using namespace std; #define N 10005
#define inf 100010 int a[N][N],ans; bool vis[N];
int dis[N],n; bool Prim()
{
///初始化每条路没走过
memset(vis,,sizeof(vis)); ///初始化到每一点的权
for(int i=; i<=n; i++)
{
dis[i]=inf;
} ans=; ///从第一个点搜起。到达自己的权为0
dis[]=; ///搜索每个节点,加入到集合中来
for(int i=; i<=n; i++)
{
int tmp=inf,k=; ///搜索每个点,找i到达下一点的最小权
for(int j=; j<=n; j++)
{
if(!vis[j]&&dis[j]<tmp)
{
tmp=dis[j];
k=j;
}
} if(tmp==inf) ///搜索不成功
{
return false;
} vis[k]=true; ///标记走过 ans=max(ans,dis[k]); ///更新到每个节点的最小权
for(int j=; j<=n; j++)
{
if(!vis[j]&&dis[j]>a[k][j])
{
dis[j]=a[k][j];
}
}
}
} int main()
{
int Case;
scanf("%d",&Case);
while(Case--)
{
scanf("%d",&n);
ans=;
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
scanf("%d",&a[i][j]);
}
}
Prim();
cout<<ans<<endl;
}
return ;
}
最新文章
- 《Ext JS模板与组件基本知识框架图----模板》
- 理解soft-clipped reads
- 基于.NET Socket API 通信的综合应用
- Qt之四种等待提示框
- [转载]MongoDB 常用命令
- vmware安装Linux时无法打开xpdf
- 在IntelliJ IDEA 13中配置OpenCV的Java开发环境
- poj 1948 Triangular Pastures 小结
- sqlserver 存储过程 修改
- 网上整理的对于Rest和Restful api的理解
- Ajax、Flash优缺点
- SQLServer存储过程批量删除
- std::remove_reference
- Java NIO2:NIO概述
- BZOJ5119 生成树计数(prufer+生成函数+分治FFT+多项式exp)
- docker_File 执行报错总结
- P1829 [国家集训队]Crash的数字表格 / JZPTAB
- leetcode463
- H01-Linux系统中搭建Hadoop和Spark集群
- gcc参数PIE和PIC的区别和共同点