标签:cte ide space fine return ati period enter output
#include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define ls i<<1 #define rs ls | 1 #define mid ((ll+rr)>>1) #define pii pair<int,int> #define MP make_pair typedef long long LL; const long long INF = 1e18+1LL; const double Pi = acos(-1.0); const int N = 5e5+10, M = 1e3+20, mod = 1e9+7, inf = 2e9; int head[N],t,cas = 1; struct ss{ int to,next; LL value; }e[N*2]; int vis[N],cnt,T,n,m; LL dep[N],ins[N],a[N]; void add(int u,int v,LL w) { e[t].next = head[u]; e[t].to = v; e[t].value = w; head[u] = t++; } void dfs(int u,int f) { vis[u] = vis[f] + 1; for(int i = head[u]; i; i = e[i].next) { int to = e[i].to; if(to == f || (vis[to] && vis[to] < vis[u])) continue; if(vis[to]) { a[++cnt] = e[i].value ^ dep[to] ^ dep[u]; continue; } dep[to] = dep[u] ^ e[i].value; dfs(to,u); } } int main() { scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); memset(head,0,sizeof(head)); memset(vis,0,sizeof(vis)); memset(dep,0,sizeof(dep)); memset(ins,0,sizeof(ins)); t = 1; cnt = 0; for(int i = 1; i <= m; ++i) { int u,v;LL w; scanf("%d%d%I64d",&u,&v,&w); add(u,v,w); add(v,u,w); } dfs(1,0); for(int i = 1; i <= cnt; ++i) { for(int j = 62; j >= 0; --j) { if(a[i]&(1LL<<j)) { if(!ins[j]) { ins[j] = a[i]; break; } a[i] ^= ins[j]; } } } LL ans = 0; for(int i = 62; i >= 0; --i) { if((ins[i]^ans) > ans) ans^=ins[i]; } printf("Case #%d: %I64d\n",cas++,ans); } return 0; }
标签:cte ide space fine return ati period enter output
原文地址:http://www.cnblogs.com/zxhl/p/6675043.html