Submission #2545529
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;
int val[maxn*20],hd[maxn],n,m;
int to[maxn*20],ne[maxn*20],num,S;
int XS[maxn],now,ci[20],d[maxn],C[233];
inline void add(int x,int y,int z){ to[++num]=y,ne[num]=hd[x],hd[x]=num,val[num]=z;}
inline void build(){
for(int i=1;i<ci[15];i++)
for(int j=1;j<=15;j++) if(ci[j-1]&i){
now=i^ci[j-1],add(now,i,1);
for(int k=1;k<=15;k++) if(ci[k-1]&now) add(now^ci[k-1]^ci[(j^k)-1],i,1+((now&ci[(j^k)-1])?1:0));
}
}
inline void spfa(){
queue<int> q; bool v[maxn];
memset(d,0x3f,sizeof(d));
memset(v,0,sizeof(v));
d[0]=0,q.push(0),v[0]=1;
int x;
while(!q.empty()){
x=q.front(),q.pop();
for(int i=hd[x];i;i=ne[i]) if(d[x]+val[i]<d[to[i]]){
d[to[i]]=d[x]+val[i];
if(!v[to[i]]) v[to[i]]=1,q.push(to[i]);
}
v[x]=0;
}
}
inline void init(){
ci[0]=1;
for(int i=1;i<=15;i++) ci[i]=ci[i-1]<<1;
build();
spfa();
}
inline void solve(){
int uu,vv,ww,ans=1<<30;
scanf("%d",&n);
for(int i=1;i<n;i++){
scanf("%d%d%d",&uu,&vv,&ww);
uu++,vv++,XS[uu]^=ww,XS[vv]^=ww;
}
for(int i=1;i<=n;i++) C[XS[i]]++;
for(int i=1;i<=n;i++){
C[XS[i]]--;
S=0,now=0;
for(int j=1;j<=15;j++){
now+=C[j]>>1;
S|=(C[j]&1)*ci[j-1];
}
now+=d[S];
ans=min(ans,now);
C[XS[i]]++;
}
printf("%d\n",ans);
}
int main(){
init();
solve();
}
Submission Info
Submission Time
2018-05-21 22:53:45+0900
Task
F - XOR Tree
User
zhouyuyang
Language
C++14 (GCC 5.4.1)
Score
1000
Code Size
1384 Byte
Status
AC
Exec Time
80 ms
Memory
25088 KB
Compile Error
./Main.cpp: In function ‘void solve()’:
./Main.cpp:38:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:40:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d",&uu,&vv,&ww);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1000 / 1000
Status
Set Name
Test Cases
Sample
0_000.txt, 0_001.txt
All
0_000.txt, 0_001.txt, 1_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt, 1_040.txt, 1_041.txt, 1_042.txt
Case Name
Status
Exec Time
Memory
0_000.txt
AC
48 ms
24576 KB
0_001.txt
AC
47 ms
24576 KB
1_002.txt
AC
71 ms
24960 KB
1_003.txt
AC
71 ms
24960 KB
1_004.txt
AC
74 ms
24960 KB
1_005.txt
AC
71 ms
24960 KB
1_006.txt
AC
71 ms
24960 KB
1_007.txt
AC
71 ms
24960 KB
1_008.txt
AC
71 ms
24960 KB
1_009.txt
AC
72 ms
24960 KB
1_010.txt
AC
72 ms
24960 KB
1_011.txt
AC
72 ms
25088 KB
1_012.txt
AC
71 ms
24960 KB
1_013.txt
AC
70 ms
24960 KB
1_014.txt
AC
71 ms
24960 KB
1_015.txt
AC
77 ms
24960 KB
1_016.txt
AC
72 ms
24960 KB
1_017.txt
AC
74 ms
24960 KB
1_018.txt
AC
75 ms
24960 KB
1_019.txt
AC
78 ms
24960 KB
1_020.txt
AC
71 ms
24960 KB
1_021.txt
AC
71 ms
24960 KB
1_022.txt
AC
73 ms
24960 KB
1_023.txt
AC
80 ms
24960 KB
1_024.txt
AC
71 ms
24960 KB
1_025.txt
AC
72 ms
24960 KB
1_026.txt
AC
71 ms
24960 KB
1_027.txt
AC
70 ms
24960 KB
1_028.txt
AC
72 ms
24960 KB
1_029.txt
AC
71 ms
24960 KB
1_030.txt
AC
76 ms
24960 KB
1_031.txt
AC
76 ms
24960 KB
1_032.txt
AC
72 ms
24960 KB
1_033.txt
AC
71 ms
24960 KB
1_034.txt
AC
75 ms
24960 KB
1_035.txt
AC
76 ms
24960 KB
1_036.txt
AC
73 ms
24960 KB
1_037.txt
AC
74 ms
24960 KB
1_038.txt
AC
74 ms
24960 KB
1_039.txt
AC
79 ms
24960 KB
1_040.txt
AC
74 ms
24960 KB
1_041.txt
AC
72 ms
24960 KB
1_042.txt
AC
75 ms
24960 KB