給出一棵樹,每條邊有乙個權值,輸出指定點的路徑異或值。
首先,這到題是我在想刷lca
lca的時候遇到的,結果這道標籤是lca
lca的題目我卻想不到為什們要用lca
lca,乙個dfs
dfs就可以過。
其實要求兩個點的路徑異或值就是xor
[roo
t][x
]xor
[roo
t][x
]^xor
[roo
t][y
]xor
[roo
t][y
],因為重複的路徑會被重複異或掉,就變成了0。
一邊dfsd
fs就可以求出所有點到roo
troo
t的路徑異或值,然後就可以o(1
)o(1
)輸出了。
#include
#include
#define n 100100
using
namespace std;
int n,m,tot,x,y,z,xor[n]
,head[n]
;struct edge
e[n*2]
;void
add(
int from,
int to,
int dis)
void
dfs(
int x,
int fa,
int k)
intmain()
dfs(1,
0,0)
;scanf
("%d"
,&m)
;while
(m--
)return0;
}
洛谷 P2420 讓我們異或吧
異或是一種神奇的運算,大部分人把它總結成不進製加法.在生活中 xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼 a是否是男生 xor b是否是男生 a和b是否能夠成為情侶 好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上有乙個權值...
洛谷 P2420 讓我們異或吧
異或是一種神奇的運算,大部分人把它總結成不進製加法.在生活中 xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼 a是否是男生 xor b是否是男生 a和b是否能夠成為情侶 好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上有乙個權值...
洛谷P2420 讓我們異或吧(樹上異或)
題目描述 異或是一種神奇的運算,大部分人把它總結成不進製加法.在生活中 xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼 a是否是男生 xor b是否是男生 a和b是否能夠成為情侶 好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上...