暫無鏈結
【問題描述】
**橫看成嶺側成峰,遠近高低各不同。 **
企鵝豆豆考試爆零了,心態**的他準備離家出走。
貧窮的企鵝國有n座城市,一開始城市之間沒有道路連線不能通行。隨著時間推移,一些道路逐漸建立。但由於國家財力實在不足,所以隨時隨地任意兩座城市最多只有一條路徑可以互相到達。
每次豆豆考試**,他都想從考場裡跑到離考場最遠的乙個城市去。當然豆豆每次都會想知道,最遠的且可以到達的城市離考場所在城市有多遠?
奇妙的事情是,企鵝國的每一條道路長度都是1。
【輸入格式】
第一行乙個整數type,表示資料型別。
接下來第二行兩個整數n,q,表示城市個數和事件個數。
接下來q行,先讀入乙個整數op,表示事件型別。
如果op=1,那麼接著有兩個整數u,v,表示城市u和城市v之間建立了一條新的道路。
如果op=2,那麼接著有乙個整數u,表示這次考試的考場在城市u,豆豆想知道最遠的城市離考場有多遠。
如果type=1,令上一次op=2時的答案為lastans,那麼對於輸入的每乙個u或者v都需要異或上lastans。(lastans初始為0。)
如果type=0,那麼不需要進行其餘額外操作。
【輸出格式】
對於每次op=2的詢問,輸出一行乙個整數表示離考場最遠的城市距離考場的距離。
【輸入樣例】
05 10
1 4 5
2 32 5
2 11 5 3
1 1 4
2 32 5
1 5 2
2 1【輸出樣例】03
23【資料範圍】
對於20
%20\%
20%的輸入資料:n
≤5000,q
≤10000
n≤5000,q≤10000
n≤5000
,q≤1
0000
。對於50
%50\%
50%的輸入資料:n
≤100000,q
≤200000
n≤100000,q≤200000
n≤1000
00,q
≤200
000。
對於另外20
%20\%
20%的輸入資料:typ
e=0type=0
type=0
。對100
%100\%
100%
的輸入資料:n
≤300000,q
≤500000
n≤300000,q≤500000
n≤3000
00,q
≤500
000,道路的修建會滿足,隨時隨地圖中不存在環。
題解因為要求離自己最遠的點,又保證隨時都是棵,所以我們可以想到樹的直徑~~(* 的我怎麼沒想到)~~,離某個點最遠的點一定是直徑的兩個端點中的乙個。
所以我們大力lct
\mathcal
lct維護樹的直徑,當兩棵樹合併的時候,新的直徑的兩個端點一定是原來的四個端點中的兩個,分6
66種情況討論來更新直徑端點即可。
出題人題解:
lct天下第一!!!!
**
#include
#define ls son[v][0]
#define rs son[v][1]
using
namespace std;
const
int m=
3e5+5;
int dad[m]
,son[m][2
],sum[m]
,le[m]
,ri[m]
,f[m]
,n,q,tot,typ;
char ch[5]
;bool rev[m]
;bool
notroot
(int v)
voidup(
int v)
void
turn
(int v)
void
push
(int v)
void
down
(int v)
void
spin
(int v)
void
splay
(int v)
up(v);}
void
access
(int v)
void
beroot
(int v)
void
link
(int x,
int y)
intdis
(int x,
int y)
intfind
(int v)
voidin(
)voidac(
)else y=
find
(x),
printf
("%d\n"
,last=
max(
dis(le[y]
,x),
dis(ri[y]
,x)));
}}intmain()
使用t2t來編寫文件
txt2tags 示例 zh sample zh.html 看這個就能很快熟悉相關語法了 教程 zh manpage zh.html txt2tags學習 bluefrog bluefrog.wu gmail.com date m d y encoding utf 8 target html 一級標...
cocos2dx 離屏渲染
今天才發現 cocos2dx 有乙個類叫做 ccrendertexture,封裝了 opengl render to texture 的 細節。這個類的是採用 fbo 把影象渲染到 自己新建的 frame buffer 來實現的。如果寫乙個 shader 比如讓影象變成灰色,如果只給乙個 ccspr...
7 24校內交流賽 T1 T2
乙個腦洞很大的題,將輸入的所有數異或起來輸出就好了 話說我為什麼這麼喜歡用異或啊 結論題 當某個字串長度恰巧為3 k 1時,從它往下的第3 k 1行恰好只決定於這個字串的左右兩個端點的值 includeusing namespace std inline intread intn,l char a ...