P4151 WC2011 最大XOR和路徑

2021-10-04 16:18:00 字數 1067 閱讀 8269

題意:給定乙個無向連通圖包含 n 個點 和 m 條邊,每條邊有邊權,現在讓你求一條 從點 1 到 n 的路徑,使得路徑上的邊權異或和最大。(可能有邊重邊和自環,任意邊可以重複走,沒有限制)

分析:首先根據異或的性質,一條邊 或 乙個環 走偶數遍的異或和 都是 0 ,所以對於乙個環,要麼不走,要麼只走一遍,那麼可以構想出最優路徑一定是一條從 1 到 n 的 鏈 上套著 若干環,那麼我們把每個環的異或和加進線性基,用這條鏈的異或和去 異或 線性基找到最大值就可以了,可是這個最優解的鏈怎麼找呢,其實只要任意找一條從 1 到 n 的鏈就可以了,因為若存在兩條從 1 到 n 的鏈,則它們已經構成了乙個環,無論你選擇哪一條作為基鏈,異或上這個環都會得到另一條鏈的異或和,所以就不用擔心最優解的正確性了。

**:

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int n =

5e4+10;

struct l_b

bool

insert

(ll val)

val^

=d[i];}

}return val>0;

} ll query

(ll res)

}h;int n,m;

struct nodee[n*4]

;int head[n]

,tot=0;

void

add(

int u,

int v,ll w)

ll dis[n]

;bool vis[n]

;void

dfs(

int u,

int pre,ll res)

}int

main()

dfs(1,

0,0ll)

;printf

("%lld"

,h.query

(dis[n]))

;}

P4151 WC2011 最大XOR和路徑

r es ul tresult result h yp erli nk hyperlink hyperl ink de scri ptio ndescription descri ptio n 一張有n nn個點,m mm條邊的無向連通圖,每條邊有權值d id i di 規定點和邊可以重複經過,求從...

WC2011 最大XOR和路徑

wc2011 最大xor和路徑 本題關鍵是抓住xor的性質 a b a b 異或兩次等於0 1到n,一定是走一條路,可能再往別處走出環 每個環都可以 獨立 走出來 1到n的路徑,可以拆成任意一條路和若干個環拼成的 dfs找環,加入線性基 能變大就異或上去。o m 64 include define ...

WC 2011 最大Xor和路徑

給你一張n個點,m條邊的無向圖,每條邊都有乙個權值,求 1到n的路徑權值和的最大值。任意一條路徑都能夠由一條簡單路徑 任意一條 在接上若干個環構成 如果不與這條簡單路徑相連就走過去再走回來 那麼在對這些環進行分類 1 直接與簡單路徑相連 相交的重複部分不算就可以了。2 不與簡單路徑相連 我們需要跑過...