栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3370 Radio Waves

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3370 Radio Waves

#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <cstdlib>#include <cmath>#define ll long long#define Mod 1000000007#define eps 1e-8using namespace std;const int MAX=1210;typedef struct{ int x,y;}node;node aa[MAX];int color[MAX],n;int ans[MAX];double dis[MAX][MAX];double ddis(node a,node b){ return sqrt((a.x-b.x)*(a.x-b.x)*1.0+(a.y-b.y)*(a.y-b.y)*1.0);}bool judge(double mid){ queue<int> q; for(int i=1;i<=n;i++) color[i]=-1; for(int i=1;i<=n;i++) { if(color[i]!=-1)continue; q.push(i); color[i]=0; while(!q.empty()) { int tmp=q.front(); q.pop(); for(int j=1;j<=n;j++) { if(dis[tmp][j]>mid+eps)continue; if(color[tmp]==color[j]) return 0; if(color[j]==-1) { color[j]=!color[tmp]; q.push(j); } } } } for(int i=1;i<=n;i++) ans[i]=color[i]+1; return 1;}int main(){ while(scanf("%d",&n)!=EOF) { double low=0.0,high=35000.0,INF=40000010.0; for(int i=1;i<=n;i++) scanf("%d%d",&aa[i].x,&aa[i].y); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==j) dis[i][j]=INF; else dis[i][j]=dis[j][i]=ddis(aa[i],aa[j]); } double mid; while(low+eps<high) { mid=(high+low)/2; if(judge(mid)) low=mid; else high=mid; } printf("%.9lfn",mid/2); for(int i=1;i<=n;i++) { if(i==n) printf("%dn",ans[i]); else printf("%d ",ans[i]); } } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号