[wc2011]最大xor和路徑
本題關鍵是抓住xor的性質:a^b^a=b
異或兩次等於0
1到n,一定是走一條路,可能再往別處走出環
每個環都可以「獨立」走出來
1到n的路徑,可以拆成任意一條路和若干個環拼成的
dfs找環,加入線性基
能變大就異或上去。
o(m*64)
#include#define il inline#define reg register int
#define numb (ch^'0')
using
namespace
std;
typedef
long
long
ll;il
void rd(int &x)
namespace
miraclee[
2*m];
int hd[n],cnt=1
;int
n,m;
void add(int x,int
y,ll z)
struct
linebase
else}}
return
; }
ll query(ll x)
}return
ret;
}}lb;
ll f[n];
bool
vis[n];
void dfs(int x,int
in_edge)
else
}}int
main()
dfs(
1,0);
printf(
"%lld\n
",lb.query(f[n]));
return0;
}}signed main()
/*author: *miracle*
date: 2019/1/1 16:08:00
*/
WC 2011 最大Xor和路徑
給你一張n個點,m條邊的無向圖,每條邊都有乙個權值,求 1到n的路徑權值和的最大值。任意一條路徑都能夠由一條簡單路徑 任意一條 在接上若干個環構成 如果不與這條簡單路徑相連就走過去再走回來 那麼在對這些環進行分類 1 直接與簡單路徑相連 相交的重複部分不算就可以了。2 不與簡單路徑相連 我們需要跑過...
WC2011 最大XOR和路徑 題解
首先看到題面,最大 異或 聯想到了什麼?沒錯,線性基。不會的同學請先學習 線性基。但是這道題,因為是在圖里,所以不能直接簡單地用線性基求解。觀察題目中的圖,我們可以發現 嗎?答案一定是由從 1 到 n 的一條路徑上的異或和以及若干環上的異或和構成的。首先我們要理清乙個問題 從 1 到 n 的路徑不用...
題解 WC2011 最大XOR和路徑
luogu 給定 n 個點 m 條邊的帶權無向圖 問所有 1 到 n 的路徑中 邊權異或和最大是多少 其中 n le 50000,m le 100000 且可能有重邊和自環 首先 看到最大異或和 我們很自然的想到用線性基去處理 但線性基對最大異或和的限制十分嚴格 需要數字之間能任意異或 而本題需要選...