洛谷P1661擴散 二分 並查集

2021-08-22 17:53:49 字數 589 閱讀 6334

首先我們先二分答案,然後用並查集記錄有多少個聯通塊。如果兩個聯通塊成為乙個聯通塊,則他們的哈密頓距離小於擴散時間的一半。因此可以二分答案,檢查是否等於乙個聯通塊就行了。

#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 ...