首先我們先二分答案,然後用並查集記錄有多少個聯通塊。如果兩個聯通塊成為乙個聯通塊,則他們的哈密頓距離小於擴散時間的一半。因此可以二分答案,檢查是否等於乙個聯通塊就行了。
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
int ll;
const
int n=100000+10;
int sx[n],sy[n];
int fathe[n];
int find(int x)
int main()
int l=0,r=1e9;
int ans=0;
while(r>=l)}}
int cnt=0;
for(int i=1;i<=n;i++)
if(cnt==1)
else
}printf("%d\n",ans);
return
0;}
P1661 擴散 二分答案 並查集
乙個點每過乙個單位時間就會向四個方向擴散乙個距離,如圖。兩個點a b連通,記作e a,b 當且僅當a b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u v都必定存在路徑e u,a0 e a0,a1 e ak,v 給定平面上的n給點,問最早什麼時刻它們形成乙個連通塊。輸入格式 第一行乙個數n,...
擴散(二分答案 並查集)
乙個點每過乙個單位時間就會向四個方向擴散乙個距離,兩個點a b連通,記作e a,b 當且僅當a b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u v都必定存在路徑e u,a0 e a0,a1 e ak,v 給定平面上的n給點,問最早什麼時刻它們形成乙個連通塊。我們可以二分答案,然後對於每個時...
洛谷P1661 資訊奧賽一本通1437 擴散
洛谷 資訊奧賽一本通 時間限制 1000 ms 記憶體限制 65536 kb 提交數 676 通過數 347 乙個點每過乙個單位時間就會向四個方向擴散乙個距離,如圖。兩個點a a b b 連通,記作e a b e a,b 當且僅當a a b b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u ...