http://poj.org/problem?id=1751

题意:有n个点,已知各点坐标,距离为权值,求最小生成树的边

但是这个最小生成树的m条边是已经确定的了,所以可以让已知边的权值为0;

在Prim算法中改一下就行

#include<stdio.h>
#include<string.h>
#include<map>
#include<iostream>
#include<algorithm>
#include<math.h>
#define N 1100
#define INF 0xfffffff using namespace std; int vis[N], n, pre[N];//pre[i]记录的是i的父节点;
double maps[N][N],dist[N]; void Prim(int start)
{
vis[start] = ;
for(int i=; i<=n; i++)
{
dist[i] = maps[start][i];
pre[i] = start;
}
for(int i=; i<=n; i++)
{
double Min = INF;
int index = -;
for(int j = ; j <= n; j++)
{
if(vis[j]== && Min>dist[j])
{
Min = dist[j];
index = j;
}
}
if(index == -) break;
if(Min != )
printf("%d %d\n", pre[index],index);
vis[index] = ;
for(int j=; j<=n; j++)
{
if(vis[j]== && dist[j] > maps[index][j])
dist[j] = maps[index][j], pre[j] = index;
}
}
} struct node
{
int x, y;
}a[N]; void Init()
{
for(int i=;i<=n;i++)
{
pre[i] = i;
vis[i] = ;
dist[i] = INF;
for(int j=; j<=n; j++)
maps[i][j] = INF;
maps[i][i] = ;
}
} int main()
{
int i, j, x, y, m;
double d;
while(scanf("%d", &n)!=EOF)
{
Init();
memset(a,,sizeof(a));
for(i=;i<=n;i++)
scanf("%d%d", &a[i].x, &a[i].y);
for(i=; i<=n; i++)
{
for(j=i+; j<=n; j++)
{
d = sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
maps[i][j] = maps[j][i] = d;
}
}
scanf("%d", &m);
for(i=; i<m; i++)
{
scanf("%d%d", &x,&y);
maps[x][y] = maps[y][x] = ; //把已知边的权值置为0;
}
Prim();
}
return ;
}

最新文章

  1. ubuntu安装mysql-python出错,EnvironmentError: mysql_config not found
  2. iOS开发工具篇-AppStore统计工具 (转载)
  3. Mongodb副本集搭建经验
  4. State状态设计模式
  5. Jquery 将表单序列化为Json对象
  6. Dynamics CRM4.0 和 Dynamics CRM2011 Plugin 实现一样的功能的方法的比较
  7. [转][色彩 A] – 永远不要使用纯黑
  8. Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。
  9. IIS Handler and Module探索
  10. 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。
  11. Android(java)学习笔记153:layout_weight使用注意事项
  12. 用友财务总帐(GL)模BI数据ETL分析
  13. 错误代码: 1052 Column &#39;stu_id&#39; in field list is ambiguous
  14. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Optimization algorithms
  15. 29)django-ORM连表结构
  16. iOS,添加阴影
  17. php腾讯面试题(转)
  18. 【 MAKEFILE 编程基础之三】详解 MAKEFILE 变量的定义规则使用!
  19. jquery.timers使用说明
  20. go语言之进阶篇数组越界导致panic

热门文章

  1. 我的WAF Bypass实战系列
  2. RabbitMQ之总结
  3. 简述项目中优化sql的方法,从哪些方面,sql语句性能如何分析?
  4. 在本机搭建mycat 单机环境,使用mariadb 伪集群
  5. javascript学习之this
  6. ldap 配置过程详解
  7. CF 166E Tetrahedron
  8. 使用DnsCat反弹shell
  9. 源码包安装Python3.6
  10. Python 多进程应用示例