WC 2011 最大Xor和路徑

2022-05-31 08:48:13 字數 913 閱讀 7413

給你一張n個點,m條邊的無向圖,每條邊都有乙個權值,求:1到n的路徑權值和的最大值。

任意一條路徑都能夠由一條簡單路徑(任意一條),在接上若干個環構成(如果不與這條簡單路徑相連就走過去再走回來)。

那麼在對這些環進行分類:

1、直接與簡單路徑相連

相交的重複部分不算就可以了。

2、不與簡單路徑相連

我們需要跑過去,再跑回來對吧,這樣的話,不管我們是怎麼跑的,非環的路徑對答案的貢獻始終為0,(抵消了嘛)。

這樣的話,我們只需要用這幾個環來構造線性基即可,最後再找個最大值就行啦!

#include#define ll long long

using

namespace

std;

const

int n=50005,m=200005

;ll b[

65],dist[m],d[n],z,ans;

inthead[n],vet[m],nxt[m],n,m,x,y,tot;

bool

vis[n],used[m];

void add(int x,int

y,ll z)

void

insert(ll x)

}void dfs(int

u) else

if (!used[i^1

]) }

}int

main()

dfs(1);

ans=d[n];

for (int i=63;i>=0;i--)

if ((ans^b[i])>ans) ans=ans^b[i];

printf(

"%lld\n

",ans);

return0;

}

WC2011 最大XOR和路徑

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

WC2011 最大XOR和路徑 題解

首先看到題面,最大 異或 聯想到了什麼?沒錯,線性基。不會的同學請先學習 線性基。但是這道題,因為是在圖里,所以不能直接簡單地用線性基求解。觀察題目中的圖,我們可以發現 嗎?答案一定是由從 1 到 n 的一條路徑上的異或和以及若干環上的異或和構成的。首先我們要理清乙個問題 從 1 到 n 的路徑不用...

題解 WC2011 最大XOR和路徑

luogu 給定 n 個點 m 條邊的帶權無向圖 問所有 1 到 n 的路徑中 邊權異或和最大是多少 其中 n le 50000,m le 100000 且可能有重邊和自環 首先 看到最大異或和 我們很自然的想到用線性基去處理 但線性基對最大異或和的限制十分嚴格 需要數字之間能任意異或 而本題需要選...