洛谷 2420 讓我們異或吧

2021-08-02 09:37:59 字數 1162 閱讀 6643

題目描述

異或是一種神奇的運算,大部分人把它總結成不進製加法.

在生活中…xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼:

(a是否是男生 )xor( b是否是男生)=a和b是否能夠成為情侶

好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上有乙個權值。我們要進行m次詢問,對於每次詢問,我們想知道某兩點之間的路徑上所有邊權的異或值。

輸入輸出格式

輸入格式:

輸入檔案第一行包含乙個整數n,表示這顆開心的樹擁有的結點數,以下有n-1行,描述這些邊,每行有3個數,u,v,w,表示u和v之間有一條權值為w的邊。接下來一行有乙個整數m,表示詢問數。之後的m行,每行兩個數u,v,表示詢問這兩個點之間的路徑上的權值異或值。

輸出格式:

輸出m行,每行乙個整數,表示異或值

輸入輸出樣例

輸入樣例#1:

5 1 4 9644

2 5 15004

3 1 14635

5 3 9684

3 2 4

5 4

1 1

輸出樣例#1:

975

14675

0 說明

對於40%的資料,有1 ≤ n,m ≤ 3000;

對於100%的資料,有1 ≤ n ,m≤ 100000。

//x^x ^x 還是等於x  這就好辦了

#include

#include

#include

using

namespace

std;

const

int maxn = 100050;

int n,m;

struct edgee[maxn*2+20];

int f[maxn],head[maxn],tot;

void add_edge(int u,int v,int w)

void dfs(int u,int father){

for(int i=head[u];i;i=e[i].next){

int v=e[i].to;

if(v==father) continue;

f[v]=f[u]^e[i].va

LCA 洛谷2420 讓我們異或吧 題解

給出一棵 n 個節點的樹,每條邊都有邊權。再給出 m個詢問,求 x y 路徑上邊權的異或值。看洛谷討論無意中看到這道題,一點進來發現竟然是道水題,於是水了部落格qaq。樹上路徑肯定是lca,但是由於是異或,會發現並沒有必要 只需要認為詢問是 x root 然後 ro ot y 就可以了,因為重複的那...

洛谷 P2420 讓我們異或吧

異或是一種神奇的運算,大部分人把它總結成不進製加法.在生活中 xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼 a是否是男生 xor b是否是男生 a和b是否能夠成為情侶 好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上有乙個權值...

洛谷 P2420 讓我們異或吧

異或是一種神奇的運算,大部分人把它總結成不進製加法.在生活中 xor運算也很常見。比如,對於乙個問題的回答,是為1,否為0.那麼 a是否是男生 xor b是否是男生 a和b是否能夠成為情侶 好了,現在我們來製造和處理一些複雜的情況。比如我們將給出一顆樹,它很高興自己有n個結點。樹的每條邊上有乙個權值...