题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3912

思路:二分覆盖直径,然后判断是否有冲突(即距离小于等于直径的不能使用同一频率),这样可以用二分图染色的办法判断,看是否能将整个图都染上色。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define MAXN 1444
#define inf 1<<30
#define eps 1e-9 struct Point{
double x,y;
}p[MAXN]; double map[MAXN][MAXN];
int color[MAXN];
int ans[MAXN];
int n; double Get_Dist(int i,int j)
{
double d1=(p[i].x-p[j].x)*(p[i].x-p[j].x);
double d2=(p[i].y-p[j].y)*(p[i].y-p[j].y);
return sqrt(d1+d2);
} bool Judge(double limit)
{
memset(color,,sizeof(color));
queue<int>que;
for(int i=;i<=n;i++){
if(color[i]==){
color[i]=;
que.push(i);
while(!que.empty()){
int u=que.front();
que.pop();
for(int v=;v<=n;v++){
if(map[u][v]>limit-eps)continue;
if(color[u]==color[v])return false;
if(color[v]==){
color[v]=-color[u];
que.push(v);
}
}
}
}
}
for(int i=;i<=n;i++)ans[i]=color[i];
return true;
} int main()
{
while(~scanf("%d",&n)){
for(int i=;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
map[i][j]=(i==j?inf:Get_Dist(i,j));
double low=,high=40000.0,mid;
while(high-low>eps){
mid=(low+high)/;
if(Judge(mid)){
low=mid;
}else
high=mid;
}
printf("%.10f\n",mid/);
for(int i=;i<=n;i++){
printf(i==n?"%d\n":"%d ",ans[i]);
}
}
return ;
}

最新文章

  1. linux basic commands
  2. funsioncharts的图表操作heatmap
  3. java内部类以及异常处理
  4. 用户图形界面(GUI)学习笔记(一)——Swing与AWT
  5. 序列化与反序列化成XML
  6. 各大互联网公司前端面试题(js)
  7. bean之间的关系:继承、依赖
  8. 在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
  9. navicat内的主键和外键
  10. iOS 控制单个控制器旋转
  11. DOS命令行中的双引号
  12. ANT教程经典
  13. gdb调试整理
  14. WebService调用1(.Net)
  15. 使用Idea编写javaweb以及maven
  16. 为steghide实现字典破解功能
  17. 手机自动化测试:appium源码分析之bootstrap一
  18. margin外边距合并问题以及解决方式
  19. java实现人民币数字转大写(转)
  20. ajax基础知识

热门文章

  1. Java中try catch finally的执行顺序问题
  2. 在CentOs6.5安装jdk
  3. C#调用windows api控制打印机 状态获取 打印 自定义纸张 完整版
  4. 架构(三层架构)、框架(MVC)、设计模式三者异同点
  5. 如何通过numpy获得二维或多维数组的最大、小值索引
  6. Sql server注入简单认识
  7. CentOS下的强大的绘图工具 pinta
  8. UIApplication深入学习
  9. python-wechatAutoReword
  10. python3+spark2.1+kafka0.8+sparkStreaming