hdu 1875 畅通工程再续(最小生成树,基础)
让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去。如代码所放。。。。
正确的(放在prim外):
//2个小岛之间的距离不能小于10米,也不能大于1000米,不能无视! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std; #define M 110
double mat[M][M]; struct tt
{
double x,y;
}dian[M]; double prim(int n,int sta)
{
double sum=0.0,dis[M];
int mark[M],i,j;
for(i=;i<n;i++)
{
dis[i]=mat[sta][i];
mark[i]=;
}
mark[sta]=;
for(i=;i<n;i++)
{
double minn=999999.0;
int flag=-;
for(j=;j<n;j++)
{
if(minn>dis[j]&&mark[j]==)
{
flag=j;
minn=dis[j];
}
}
if(flag==-)
return -1.0;
else
{
mark[flag]=;
sum+=dis[flag];
for(j=;j<n;j++)
{
if(dis[j]>mat[flag][j])
dis[j]=mat[flag][j];
}
}
}
return sum;
} int main()
{
int t,i,j,n;
double ans,a;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<n;i++)
for(j=;j<n;j++)
mat[i][j]=999999.0;
for(i=;i<n;i++)
{
scanf("%lf%lf",&dian[i].x,&dian[i].y);
for(j=;j<i;j++)
{
a=sqrt((dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y));
if(a>=10.0&&a<=1000.0)//原来要把判断放在prim函数的外面啊,,,,
mat[i][j]=mat[j][i]=a;
}
}
ans=prim(n,);
if(ans<)
printf("oh!\n");
else
printf("%.1lf\n",ans*); }
return ;
}
错误的(放在了prim里):
//2个小岛之间的距离不能小于10米,也不能大于1000米,不能无视! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std; #define M 110
double mat[M][M]; struct tt
{
double x,y;
}dian[M]; double prim(int n,int sta)
{
double sum=0.0,dis[M];
int mark[M],i,j;
for(i=;i<n;i++)
{
dis[i]=mat[sta][i];
mark[i]=;
}
mark[sta]=;
for(i=;i<n;i++)
{
double minn=999999.0;
int flag=-;
for(j=;j<n;j++)
{
if(minn>dis[j]&&mark[j]==&&dis[j]>=10.0&&dis[j]<=1000.0)//放在prim里面是wa的,虽然我不知道为什么
{
flag=j;
minn=dis[j];
}
}
if(flag==-)
return -1.0;
else
{
mark[flag]=;
sum+=dis[flag];
for(j=;j<n;j++)
{
if(dis[j]>mat[flag][j])
dis[j]=mat[flag][j];
}
}
}
return sum;
} int main()
{
int t,i,j,n;
double ans,a;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<n;i++)
for(j=;j<n;j++)
mat[i][j]=999999.0;
for(i=;i<n;i++)
{
scanf("%lf%lf",&dian[i].x,&dian[i].y);
for(j=;j<i;j++)
{
a=sqrt((dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y));
mat[i][j]=mat[j][i]=a;
}
}
ans=prim(n,);
if(ans<)
printf("oh!\n");
else
printf("%.1lf\n",ans*); }
return ;
}
错误的!
求知情人告诉我为什么放在里面就不行?
hdu 1875 畅通工程再续(最小生成树,基础)的更多相关文章
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
题目大意:本题是中文题,可以直接在OJ上看 解题思路:最小生成树 1)本题的关键在于把二维的点转化成一维的点 for (i = 0; i < n; ++i) { scanf("%d%d ...
- hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
- HDU 1875 畅通工程再续(kruskal)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- HDU - 1875 畅通工程再续【最小生成树】
Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...
- HDU - 1875 畅通工程再续(最小生成树)
d.c个小岛,通过建立桥,使其全部可达.求所有的桥的最小长度和. s.最小生成树,数据改成double就行了 c.Prim算法:cost[a][b]和cost[b][a]都得赋值. /* Prim算法 ...
随机推荐
- hdu 2176 取(m)石子游戏
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176 题意分析:给出M堆石子,两人交替取子,给出先手能否胜利. 不能输出No, 能则输出Yes并给出第 ...
- DataGrid2
1.DataGrid的button属性设置 CommandName="ToEdit": 对其中的button按钮进行选择: CommandArgument='<%#Eval( ...
- How to enables AX email functionality without Outlook
/***************************************************************** (C) Copyright DENTSPLY Internatio ...
- SQL Server 数据库身份认证以及包含数据库
首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...
- sysfs->sys简单介绍
Sys节点 1:sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统, sysfs 的挂载点 /sys 目录结构. 2:/sys 文件系统下的目录结构 /sys 下的目录结构是经过 ...
- ARPA
ARPA是英文Advanced Research Projects Agency的缩写,代表美国国防部高级研究计划署.是美国国防部高级研究计划管理局因军事目的而建立的,开始时只连接了4台主机,这便是只 ...
- [转]unable to resolve superclass of 的奇怪问题和一种解决方法!
[转]unable to resolve superclass of 的奇怪问题和一种解决方法! http://blog.csdn.net/jackymvc/article/details/90015 ...
- 你用什么方法检查 PHP 脚本的执行效率(通常是脚本执行时间)和数据库 SQL 的效率(通常是数据库 Query 时间), 并定位和分析脚本执行和数据库查询的瓶颈所在?
php: 一般是在你要检查的代码开头记录一个时间,结尾记录一个时间.取差值, 数据库SQL的效率 sql的explain(mysql),启用slow query log记录慢查询. 通常还要 ...
- 微软职位内部推荐-Senior SDE for Big Data
微软近期Open的职位: Title: Senior SDE The Big Data Tooling team looking for a talented and passionate devel ...
- 【原创】书本翻页效果booklet jquery插件系列之简介
booklet jquery插件系列之简介 本文由五月雨恋提供,转载请注明出处. 一.安装 1.添加CSS和Javascript 添加booklet CSS文件到你的页面. <link rel= ...