Highways
poj1751:http://poj.org/problem?id=1751
题意:给你n个城市,每个城市的坐标给你,然后为了是每个城市都连通,需要在已经建了一些街道额基础上,再次建一些街道使其连通,求使得所建街道最短的那些边。
题解:直接求一棵生成树,把已经建好的边的边权设置为0,用prim走一遍。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define INF 100000000.0
using namespace std;
struct Node{
int x;
int y;
}node[];//储存村庄
double g[][];
double lowcost[];
bool flag;
double juli(Node a,Node b){//求距离 ,注意数据类型
double xx=pow(((double)a.x-b.x),);
double yy=pow(((double)a.y-b.y),);
return sqrt(xx+yy);
}
int n,m,nearvex[],u,v1;
void prim(int v0){
flag=false;//标记是否需要建边
for(int i=;i<=n;i++){
lowcost[i]=g[v0][i];
nearvex[i]=v0;
}
nearvex[v0]=-;
for(int i=;i<n;i++){
double min=INF;//注意这里的数据类型,不能换成int
int v=-;
for(int j=;j<=n;j++){
if(nearvex[j]!=-&&lowcost[j]<min){
v=j;
min=lowcost[j];
}
}
if(v!=-){
if(lowcost[v]!=){
flag=true;
printf("%d %d\n",nearvex[v],v);//找到就输出
}
nearvex[v]=-;
for(int k=;k<=n;k++){
if(nearvex[k]!=-&&g[v][k]<lowcost[k]){
nearvex[k]=v;
lowcost[k]=g[v][k];
}
}
}
}
if(!flag)printf("\n");//没有要建的边,就输出空行
}
int main(){
while(~scanf("%d",&n)){
for(int i=;i<=n;i++)//存点
scanf("%d%d",&node[i].x,&node[i].y);
for(int i=;i<=n;i++)//建图
for(int j=i+;j<=n;j++){
g[i][j]=g[j][i]=juli(node[i],node[j]);
}
for(int i=;i<=n;i++)//初始化
for(int j=;j<=n;j++){
if(i==j)g[i][j]=;
else if(g[i][j]==)g[i][j]=INF;
}
scanf("%d",&m);
for(int i=;i<=m;i++){//处理已经不需要建的边
scanf("%d%d",&u,&v1);
g[u][v1]=g[v1][u]=;
}
prim(); }
}
Highways的更多相关文章
- H:Highways
总时间限制: 1000ms 内存限制: 65536kB描述The island nation of Flatopia is perfectly flat. Unfortunately, Flatopi ...
- Highways(prim & MST)
Highways Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23421 Accepted: 10826 Descri ...
- poj2485 Highways
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...
- poj 2485 Highways 最小生成树
点击打开链接 Highways Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19004 Accepted: 8815 ...
- poj 2485 Highways
题目连接 http://poj.org/problem?id=2485 Highways Description The island nation of Flatopia is perfectly ...
- POJ 1751 Highways (最小生成树)
Highways Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- POJ 1751 Highways (最小生成树)
Highways 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/G Description The island nation ...
- UVa 1393 (容斥原理、GCD) Highways
题意: 给出一个n行m列的点阵,求共有多少条非水平非竖直线至少经过其中两点. 分析: 首先说紫书上的思路,编程较简单且容易理解.由于对称性,所以只统计“\”这种线型的,最后乘2即是答案. 枚举斜线包围 ...
- (poj) 1751 Highways
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor ...
- Highways poj 2485
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...
随机推荐
- java websockect
https://github.com/TooTallNate/Java-WebSocket (websockect类库包) http://blog.openlg.net/index.php/archi ...
- 怎样创建TWaver 3D的轮廓选中效果
在一般的游戏中.物体的选中效果会是这样: TWaver 3D中,物体的默认的选中效果一般都是一个方方正正的外框.在HTML5的Mono版本号中,TWaver提供了轮廓线样式的选中效果. 通过例如以下代 ...
- 判断IMEI或MEID是否合法
/*----------------------------------------------- * 判断此字串所代表的IMEI或MEID是否合法 * @param imei * @author H ...
- iOS UIKit:viewController之定义(2)
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Json字符串与字典互转
#pragma mark 转换json字符串 +(NSString *)toJSON:(id)aParam { NSData *jsonData=[NSJSONSerialization data ...
- Python:构建缓冲带提取区域平均坡度
前一段时间做提取坡度的问题,当时首先想到的是使用ArcEngine来做,因为记得有ITopoOperator接口可以构建缓冲带,用IExtractionRaster可以掩膜栅格数据,利用IPixelB ...
- Struts.properties(转)
原文地址:http://blog.csdn.net/wfcaven/article/details/5937567 Struts2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的行为,从而满 ...
- 10.3 noip模拟试题
希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...
- 解决win service 2003 IIS发布Gis网站后,访问地图服务出错,无法正常打开而且 事件查看器出现错误提示。
错误详情: 应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为{379376DB-AEA6-40D1-9491-9345E61EF6BE})的 本地 激活 权限授予用户 NT AUT ...
- Android EditText自动弹出输入法焦点
http://mobile.51cto.com/aprogram-403138.htm 1. 看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的 ...