ZJOI2012一試 旅遊 題解 最長鏈 bfs

2021-07-26 23:49:57 字數 1014 閱讀 2362

【題目大意】

小白和小藍到t國旅遊,t國是乙個凸 n 邊形,包含 n-2 個城市,城市組成了關於 t 國的乙個三角剖分,兩人的旅遊路線可以看做是連線 n 個頂點中不相鄰兩點的線段,求旅遊路線能經過的最多的城市的數量?

【解題報告】

如果判斷是否經過乙個城市,其實就是判斷連線n個頂點中不相鄰兩點的線段(即旅遊路線)是否經過乙個三角形(城市)的不同的兩條邊。

所以我們可以在兩個相鄰的三角形之間建邊,顯然建出來的是無根樹,答案就是無根樹的最長鏈,即樹的直徑(算樹的直徑有很多種做法,不細講了)。

#include

#include

#include

using

namespace

std;

const

int maxn=200000;

int n,ans,tot,st,f[maxn+5],lnk[maxn+5],son[maxn*2+5],nxt[maxn*2+5],que[maxn+5];

bool vis[maxn+5];

struct edge

void add_(int x,int y)

void work_(int x,int y,int z,int id)

; a[(id-1)*3+2]=(edge);

a[(id-1)*3+3]=(edge);

}void bfs_(int s)

}}int main()

sort(a+1,a+1+3*n);

for (int i=2; i<=3*n; i++)

if (a[i].x==a[i-1].x&&a[i].y==a[i-1].y) add_(a[i-1].id,a[i].id),add_(a[i].id,a[i-1].id);

ans=0; bfs_(1); bfs_(st);//第一次bfs求第二次bfs的起點,第二次bfs求答案

printf("%d",ans);

return

0;}

省選專練ZJOI2012旅遊

stl在開o2後自然是大水題。考點 樹的直徑。第一二次構圖。把每乙個三角塊相鄰的建邊。怎麼建?stl 你都做到這個題了map hash兩個值鐵定會吧。但是zjoi沒有那麼好心,不過你也有70分了。於是這樣 把兩點建邊。排個序。相同的時候連起來。樹的直徑。很多人求複雜了。樹的直徑一遍dfs就可以,不需...

ZJOI2012網路 題解報告 LCT

有乙個無向圖g,每個點有個權值,每條邊有乙個顏色。這個無向圖滿足以下兩個條件 對於任意節點連出去的邊中,相同顏色的邊不超過兩條。圖中不存在同色的環,同色的環指相同顏色的邊構成的環。在這個圖上,你要支援以下三種操作 修改乙個節點的權值。修改一條邊的顏色。查詢由顏色c的邊構成的圖中,所有可能在節點u到節...

ZJOI2019一試遊記

早上頹刀劍,中午趕動車,寫一會兒作業,下午趕車到酒店,發現跟杭二的巨佬乙個酒店qwq 本來想測試一下我在人群中大叫一聲ljc1301 ak zjoi2019會有幾個人回頭,但是想想我可能它們都認識。還是算了好了。晚上飯菜好評,坐等講評春眠 有沒有春夢就不知道了 吃完去ljc房間和xj,zlz摸魚。看...