一道枚举+搜索题;

很容易看出这道题目要求尽量不在大的城市里面建加油站;

所以从最大的城市开始枚举!

代码:

 #include<cstdio>
#include<cmath>
#include<cstring>
#define maxn 130
#include<queue>
using namespace std; struct node
{
double x,y;
} no[maxn];
queue<int>q;
int dis[maxn][maxn],n,d,dd[maxn];
bool vis[maxn],flag[maxn]; bool bfs()
{
while(!q.empty())q.pop();
for(int i=;i<=n;i++)if(flag[i])dd[i]=;
else dd[i]=;
q.push();
vis[]=;
while(!q.empty())
{
int u=q.front();
vis[u]=;
q.pop();
for(int i=; i<=n; i++)
{
if(!vis[i]&&i!=u&&dis[u][i]<=d)
{
dd[i]=min(dd[i],dd[u]+dis[u][i]);
if(flag[i])q.push(i);
}
}
}
for(int i=;i<=n;i++)
if(flag[i]==&&dd[i]*>d)return ;
else if(flag[i]&&!vis[i])return ;
return ;
} int main()
{
while(scanf("%d%d",&n,&d)!=EOF)
{
memset(flag,,sizeof flag);
memset(vis,,sizeof vis);
for(int i=; i<=n; i++)
scanf("%lf%lf",&no[i].x,&no[i].y);
for(int i=; i<=n; i++)
for(int j=i+; j<=n; j++)
dis[i][j]=dis[j][i]=ceil(sqrt((no[i].x-no[j].x)*(no[i].x-no[j].x)+(no[i].y-no[j].y)*(no[i].y-no[j].y)));
if(!bfs()){puts("-1");continue;}
for(int i=n; i>=; i--)
{
memset(vis,,sizeof vis);
flag[i]=;
if(!bfs())flag[i]=;
}
int i;
for(i=n;i>=;i--)if(flag[i])break;
for(;i>=;i--)if(flag[i])printf("");
else printf("");
printf("\n");
}
return ;
}

hdu 4435的更多相关文章

  1. HDU 4435 charge-station () bfs图论问题

    E - charge-station Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  2. HDU 4435 charge-station bfs图论问题

    E - charge-station Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  3. hdu 4435 charge-station

    // 题意 从1出发逛完N个点回到出发点 要在这N个点选择性建设加油站 车每次加满油最多可以行使D米// 然后最少要花多少钱才能达到上述要求// 注意到 第i个城市的花费是 2^(i-1) 所以 我就 ...

  4. HDU 4435 charge-station (并查集)

    先说下题目的意思: 在一个二维坐标系中有N个点,某人要来个走遍所有点的旅行,但是他的车每次加油后只能走M个单位距离:所以要在这个N点中选一些建立加油站:问题来了:i^th  点 建加油站的花费是  2 ...

  5. hdu 4435 第37届ACM/ICPC天津现场赛E题

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题目:给出N个城市,从1开始需要遍历所有点,选择一 ...

  6. hdu 4435 bfs+贪心

    /* 题意:给定每个点在平面内的坐标,要求选出一些点,在这些点建立加油站,使得总花费最少(1号点必须建立加油站).在i点建立加油站需要花费2^i. 建立加油站要求能使得汽车从1点开始走遍全图所有的点并 ...

  7. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  9. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

随机推荐

  1. C# 反射的简单用法

    新建两个项目:类库(Model)和控制台应用程序(ReflectTest). 在[Model]中添加一个类[User]: namespace Model { public class User { p ...

  2. EF中使用数据库的标量值函数

    参考资料:https://msdn.microsoft.com/zh-cn/library/dd456847(v=vs.110).aspx http://stackoverflow.com/quest ...

  3. 注册dll

    unit Unit1; interface uses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syste ...

  4. DDX_Text (MFC)

    DDX_Text (MFC) 描述:该DDX_Text功能管理int的转移,UINT,long,DWORD,CString,float, 或 double编辑控件之间的数据在对话框中,表单视图或控制视 ...

  5. 记一次ftp服务器错误 centOS 6.4 vsftpd 500 illegal port command

    这个错误是因为是主动模式的,应该改为被动模式 以下是操作过程: iptables中加 -A INPUT -p tcp -m state --state NEW -m tcp --dport 10221 ...

  6. 使用hwclock同步RTC(硬件时钟)和OS Clock(操作系统时钟)

    Linux下面有个命令叫做hwclock,其主要的功能是用来在RTC和操作系统之间进行时钟同步.既可以将RTC的时钟同步到操作系统,也可以在通过hwclock将当前系统时间.Internet时间.本地 ...

  7. groovy --不注意的小错误(java.lang.String.positive() is applicable)

    sql 语句拼接报错: No signature of method: java.lang.String.positive() is applicable for argument types: () ...

  8. 记录一次mount问题

    linux  centos 6.5 _64 oracle 11.2g 今天接到一个客户电话说重启了服务器,数据库没有重启来,看了数据库的报错 没有找到control文件的路径,数据库启动到了 unmo ...

  9. thinkphp 缓存写入失败,网站报错

    周末,正在家里休息,同事突然call 我,说网站打不开了,网站一直很正常的,突然成这样,肯定某个地方出问题了, 原来是网站所在的硬盘分区,没空间了,被mysql的日志占满了!!! 哎,好好的周末,在公 ...

  10. git: command not found

    在使用git时,出现“git: command not found”的情况,于是使用yum安装: [root@localhost ~]# yum install -y gitLoaded plugin ...