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算法 ...
随机推荐
- ubuntu 常用参数设置
在Linux下,对于参数的设置,一般来说,都遵循这个规律.每一个功能程序,一定对于一个对于名字的配置文件. 涉及到多用户的功能配置,一定有一个全局的配置文件,对所有用户都生效,而每个用 ...
- PCB参数计算神器-Saturn PCB Design Toolkit下载及安装指南
进行PCB设计,特别是高频高速设计时,难免会涉及到PCB相关参数的计算及设置,如:VIA的过流能力,VIA的寄生电容.阻抗等,导线的载流能力,两相互耦合信号线间的串扰,波长等参数. 这里向大家介绍一款 ...
- APUE习题8.7
看书的时候发现这个习题没有答案,于是就想把自己做的结果贴上来,和大家分享分享! 首先把题目贴上来吧: /*********** 8.10节中提及POSIX.1要求在调用exec时关闭打开的目录流.按下 ...
- WP开发笔记——页面传参
WP APP页面与页面之间参数的传递可以通过程序的App类设置全局变量. 由于App 类继承自Application类,而通过Application的Current属性可以获取到与当前程序关联的App ...
- Sql 临时表
一个#是只能在当前打开滴查询窗体查询,两个#是能够在其他打开滴查询窗体查询 SELECT 'VR001839003YP' 列名1,'RO512498726DE' 列名2 INTO #临时表 UNION ...
- WPF 绑定三(绑定List中指定的字符串)
xaml: <Window x:Class="WpfApplication1.Window3" xmlns="http://schemas.microsoft.co ...
- Vue.js 2.0版
Vue.js 2.0版升级,更改了好多方法或指令 new Vue({ el:'#demo', data:{ msg:"vue2.0" } }) v-model lazy numbe ...
- liunx下vi命令详解
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- 【转载】mysql 四种隔离级别分析
sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...
- 获得当前时间的PRO
1.没有参数的存储过程 create or replace procedure get_timeas cur_time varchar2(10);begin select to_char(sy ...