用的是prim算法。

我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点)。
但其实时间也差不多,和遍历所有的点的方法都是16ms。。。

#include <iostream>
#include <algorithm>
#include <string.h>
#include <stdio.h>
#include <string>
#include <queue>
using namespace std; const int INF=0x3f3f3f3f;
int n,cost;
int ans;
int w[][];
int dis[]; //生成树外的点与生成树相连的最短边长
int pre[]; //pre[v]为v的前驱节点,用来输出进入最小生成树的边。该题用不到
int vis[]; //标记点是否在生成树中
vector<int> son[]; void init() {
memset(pre,,sizeof(pre));
memset(dis,INF,sizeof(dis));
memset(vis,,sizeof(vis));
} int solve() {
vector<int> node;
int s=,counts=,ans=,tmp,k;
dis[s]=;
pre[s]=s; node.push_back(s);
while() {
tmp=INF; for(int i=; i<node.size(); i++) {
int v=node[i];
if(!vis[v]&& dis[v]<tmp) {
tmp=dis[v];
k=v; //k即为在没有进入最小生成树的点中到树的距离(dis[k])最小的点。
}
}
/*
//直接遍历所有的点
for(int i=1;i<=n;i++){
if(!vis[i]){
if(dis[i]<tmp){
tmp=dis[i];
k=i;
}
}
}
*/
if(tmp==INF)
break;
ans+=tmp;
vis[k]=; for(int i=; i<son[k].size(); i++) {
int v=son[k][i];
if(!vis[v] && w[k][v]<dis[v]) {
dis[v]=w[k][v];
pre[v]=k;
node.push_back(v);
}
}
}
return ans; }
int main() {
while(scanf("%d",&n)!=EOF) { for(int i=; i<; i++) {
son[i].clear();
}
for(int i=; i<=n; i++) {
for(int j=; j<=i; j++)
scanf("%d",&cost);
for(int j=i+; j<=n; j++) {
scanf("%d",&cost);
w[i][j]=w[j][i]=cost;
son[i].push_back(j);
son[j].push_back(i);
}
}
ans=;
init();
ans=solve(); printf("%d\n",ans);
}
return ;
}

最新文章

  1. win7(64位)php5.5-Apache2.4-mysql5.6环境安装
  2. google 火狐 模拟显示手机页面插件
  3. HTML5基础
  4. 检测端口状态的python脚本
  5. 一篇文章教你学会基础的HTML
  6. eclipse快捷键使用
  7. [工作积累] error: bad class file magic (cafebabe) or version (0033.0000)
  8. java实现文件编码监测
  9. 分享个人Vim型材
  10. 为什么arguments是类数组对象
  11. Azure AI 服务之语音识别
  12. 这是最好的时光 这是最坏的时光 v0.1.1.1
  13. Vue js 的生命周期(看了就懂)
  14. Android 8.0 无法收到broadcast
  15. C/C++ 内存对齐原则及作用
  16. 基于Web的漏洞利用
  17. ThreadLocal终极源码剖析-一篇足矣!
  18. C/C++杂记:深入虚表结构
  19. 第4章 初识STM32
  20. Mac OS X各版本号的历史费用和升级关系

热门文章

  1. OpenGL1-6讲小结
  2. Template_5模板拾遗1
  3. VBA访问SQLSERVER2005筛选数据库
  4. Java设计模式之--代理模式学习
  5. 【NPOI】.NET EXCEL导入导出开发包
  6. EDK中如何使用ISE中生成的IP
  7. oracle 文件导出
  8. localStorage变更事件当前页响应新解
  9. JS面向对象编程创建类的方式
  10. intellij idea 代码正常,但是编译出现 java:需要&quot;;&quot;