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 ;
}

Highways---poj1751最小生成树的更多相关文章

  1. Highways POJ-1751 最小生成树 Prim算法

    Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...

  2. C - Highways poj1751最小生成树

    The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of p ...

  3. POJ-1751 Highways(最小生成树消边+输出边)

    http://poj.org/problem?id=1751 Description The island nation of Flatopia is perfectly flat. Unfortun ...

  4. POJ1751 Highways【最小生成树】

    题意: 给你N个城市的坐标,城市之间存在公路,但是由于其中一些道路损坏了,需要维修,维修的费用与公路长成正比(公路是直的). 但现有M条公路是完整的,不需要维修,下面有M行,表示不需要维修的道路两端的 ...

  5. POJ 1751 Highways (最小生成树)

    Highways 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/G Description The island nation ...

  6. POJ 2485:Highways(最小生成树&amp;&amp;prim)

    Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21628   Accepted: 9970 Descrip ...

  7. POJ 1751 Highways 【最小生成树 Kruskal】

    Highways Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23070   Accepted: 6760   Speci ...

  8. POJ 2485 Highways( 最小生成树)

    题目链接 Description The islandnation of Flatopia is perfectly flat. Unfortunately, Flatopia has no publ ...

  9. POJ 2485 Highways【最小生成树最大权——简单模板】

    链接: http://poj.org/problem?id=2485 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  10. POJ 2485 Highways (求最小生成树中最大的边)

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

随机推荐

  1. PHP代码审计笔记--CSRF漏洞

    0x01 前言 CSRF(Cross-site request forgery)跨站请求伪造.攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻 ...

  2. MongoDB(六)-- 集群搭建

    一.集群介绍 sharding通过将数据集分布于多个也称作分片(shard)的节点上来降低单节点的访问压力.每个分片都是一个独立的数据库,所有的分片组合起来构成一个逻辑上的完整意义的数据库.因此,分片 ...

  3. RabbitMq 之简单队列

    简单队列类似于我们的生产者,消费者, 一个生产者,对应一个消费者. 直接上代码: package com.j1.rabbitmq.simple; import com.j1.rabbitmq.util ...

  4. socket.io websocket

    不能不知道的事: 在Http协议中,客户端向服务器端发送请求,服务器端收到请求再进行回应,整个过程中,服务器端是被动方,客户端是主动方: websoket是H5的一种基于TCP的新通信协议,它与Htt ...

  5. linux下复制文件报cp: omitting directory `XXX'

    错误操作:这个错误是因为在linux下我使用cp复制一个文件夹A到另一个目录下时报错cp: omitting directory `XXX' 原因:文件夹A中还有子目录文件,所以linux不允许直接复 ...

  6. Android开发懒人库 -- ButterKnife (转载)

    ButterKnife:8.1.0的使用   http://www.jianshu.com/p/0392199a682b http://www.cnblogs.com/flyme/p/4517560. ...

  7. 解决安装laravel/homestead vagrant环境报"A VirtualBox machine with the name 'homestead' already exists."的错误

    之前在mac上安装laravel/homestead vagrant虚拟机环境时由于参照的教程是: 每次都必须在~/Homestead目录下边运行vagrant up/halt命令,觉得实在是不方便, ...

  8. c++ 友元类 与 友元类派生类

    定义: 当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问.我们就把类B叫做类A的友元. 用法: 在A类中加入: friend class B; 下面这个程序说明 ...

  9. elementUI Message 独立引入的用法

    同理,Alert,MessageBox, Notification, 也是这样引入 单组件单独引用: import { Message } from 'element-ui'; export defa ...

  10. LeetCode 38 Count and Say(字符串规律输出)

    题目链接:https://leetcode.com/problems/count-and-say/?tab=Description   1—>11—>21—>1211—>111 ...