POJ Building roads [二分答案 2SAT]
睡觉啦
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=,M=2e6+,INF=1e7;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,A,B,x,y;
struct point{int x,y;}a[N],s1,s2,f[N<<];
inline int dis(point &a,point &b){return abs(a.x-b.x)+abs(a.y-b.y);}
struct edge{
int v,ne;
}e[M];
int cnt,h[N];
inline void ins(int u,int v){//if(u==1 || v==1) printf("ins %d %d\n",u,v);
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
}
void build(int mid){
cnt=; memset(h,,sizeof(h));
for(int i=;i<=A;i++)
ins(f[i].x,f[i].y+n),ins(f[i].x+n,f[i].y),ins(f[i].y,f[i].x+n),ins(f[i].y+n,f[i].x);
for(int i=A+;i<=A+B;i++)
ins(f[i].x,f[i].y),ins(f[i].x+n,f[i].y+n),ins(f[i].y,f[i].x),ins(f[i].y+n,f[i].x+n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) if(i!=j){
if(dis(a[i],s1)+dis(a[j],s1)>mid) ins(i,j+n),ins(j,i+n);
if(dis(a[i],s2)+dis(a[j],s2)>mid) ins(i+n,j),ins(j+n,i);
if(dis(a[i],s1)+dis(s1,s2)+dis(s2,a[j])>mid) ins(i,j),ins(j+n,i+n);
if(dis(a[i],s2)+dis(s1,s2)+dis(s1,a[j])>mid) ins(i+n,j+n),ins(j,i);
}
}
int dfn[N],dfc,low[N],belong[N],scc;
int st[N],top;
void dfs(int u){//printf("Dfs %d\n",u);
dfn[u]=low[u]=++dfc;
st[++top]=u;
for(int i=h[u];i;i=e[i].ne){
int v=e[i].v;
if(!dfn[v]) dfs(v),low[u]=min(low[u],low[v]);
else if(!belong[v]) low[u]=min(low[u],dfn[v]);
}
if(dfn[u]==low[u]){
scc++; int x=;
while(x!=u){
x=st[top--];
belong[x]=scc;
}
}
}
bool check(int mid){//printf("check %d\n",mid);
build(mid);
for(int i=;i<=n+n;i++) dfn[i]=low[i]=belong[i]=;
dfc=scc=top=;
for(int i=;i<=n;i++) if(!dfn[i]) dfs(i);
for(int i=;i<=n;i++) if(belong[i]==belong[i+n]) return false;
return true;
} int l=,r=INF;
void solve(){
int ans=-;
while(l<=r){
int mid=(l+r)>>;
if(check(mid)) ans=mid,r=mid-;
else l=mid+;
}
printf("%d\n",ans);
}
int main(){
freopen("in","r",stdin);
n=read();A=read();B=read();
s1.x=read();s1.y=read();s2.x=read();s2.y=read();
for(int i=;i<=n;i++) a[i].x=read(),a[i].y=read();
for(int i=;i<=A;i++) f[i].x=read(),f[i].y=read();
for(int i=A+;i<=A+B;i++) f[i].x=read(),f[i].y=read(),l=max( l,dis(a[ f[i].x ],a[ f[i].y ]) );
solve();
}
POJ Building roads [二分答案 2SAT]的更多相关文章
- POJ 3104 Drying(二分答案)
题目链接:http://poj.org/problem?id=3104 ...
- BZOJ4078 WF2014Metal Processing Plant(二分答案+2-SAT)
题面甚至没给范围,由数据可得n<=200.容易想到二分答案,暴力枚举某集合的价值,2-SATcheck一下即可.这样是O(n4logn)的. 2-SAT复杂度已经是下界,考虑如何优化枚举.稍微改 ...
- 【二分答案+2-SAT】Now or later UVALive - 3211
题目链接:https://cn.vjudge.net/contest/209473#problem/J 题目大意: 有n架飞机,每架飞机有两个可降落时间点a,b(a<b)(即一架飞机可以选择在时 ...
- POJ 3122 Pie 二分答案
题意:给你n个派,每个派都是高为一的圆柱体,把它等分成f份,每份的最大体积是多少. 思路: 明显的二分答案题-- 注意π的取值- 3.14159265359 这样才能AC,,, //By Sirius ...
- Poj 1743 Musical Theme(后缀数组+二分答案)
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 28435 Accepted: 9604 Descri ...
- HDU 1815 Building roads
二分答案 + 2-SAT验证 POJ 稳过,HDU C++ 超时,G++ 550ms左右AC #include<cstdio> #include<cstring> #inclu ...
- Poj2749:Building roads
题意 有 N 个牛栏,现在通过一条通道(s1,s2)要么连到s1,要么连到s2,把他们连起来,他们之间有一些约束关系,一些牛栏不能连在同一个点,一些牛栏必须连在同一个点,现在问有没有可能把他们都连好, ...
- poj 2749 Building roads (二分+拆点+2-sat)
Building roads Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6229 Accepted: 2093 De ...
- HDU 1815, POJ 2749 Building roads(2-sat)
HDU 1815, POJ 2749 Building roads pid=1815" target="_blank" style="">题目链 ...
随机推荐
- zlib1.2.11静态编译
1.进入官网http://zlib.net/,下载且解压zlib1211.zip: 2. 打开已解压的zlib-1.2.11目录,找到win32文件夹 3.将Makefile.msc复制到上一层,也就 ...
- App Doc View Frame中指针的获取
// App中获取其它三项指针 void CSDIApp::OnApp() { // App // Doc CDocument *pDoc = ((CFrameWndEx *)m_pMainWnd)- ...
- HDU 1232 畅通工程(模板——并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1232 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出 ...
- 从零开始学习前端开发 — 1、HTML基础
一.web标准 web标准-网页制作的标准,它是由一系列标准组成的,主要包含三个方面:结构(html,xhtml),表现(css),行为(javascript) 注:结构和表现的标准由w3c(万维网联 ...
- 微信公众号中ip白名单用谁的ip
https://segmentfault.com/q/1010000010201211 白名单怎么说 我该填写谁的 我的ip地址每天都变化的 服务器ip啊,为了防止未授权的代码盗用你的权限.写你ip是 ...
- PhpStorm (强大的PHP开发环境)2017.2.4 附注册方法
http://www.oyksoft.com/soft/40722.html?pc=1 最新版PhpStorm 2017正式版改进了PHP 7支持,改进代码完成功能. PhpStorm 是最好的PHP ...
- phpmyadmin设置密码,不用登录直接进入
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.config.sample.inc.PHP改为config.inc.php 2.加入或更改代码: [php] view plain copy ...
- Tp-link路由器怎么设置端口映射 内网端口映射听语音
https://jingyan.baidu.com/article/ca00d56c710ef9e99eebcf85.html 只有一台能上网的电脑就可以自己免费搭建服务器,本经验简单介绍家用tp-l ...
- dedecms_分页技术
<ul>{dede:list pagesize='30'} <li><a href="[field:arcurl/]">[field:title ...
- es6重点笔记:数值,函数和数组
本篇全是重点,捡常用的怼,数值的扩展比较少,所以和函数放一起: 一,数值 1,Number.EPSILON:用来检测浮点数的计算,如果误差小于这个,就无误 2,Math.trunc():取整,去除小数 ...