Submission #778623

#TimeUsernameProblemLanguageResultExecution timeMemory
778623DangerNoodle7591Deblo (COCI18_deblo)C++17
18 / 90
80 ms51948 KiB
#include<bits/stdc++.h> using namespace std; #define lalala ios_base::sync_with_stdio(false);cin.tie(NULL); #define endl "\n" #define ll long long #define pb push_back #define N 100005 #define M 24 vector<int> adj[N]; ll int dp[N][M][2],arr[N]; ll int cev=0; void dfs(int x,int once){ for(int i=0;i<M;i++){ if((arr[x]>>i)&1)dp[x][i][0]=1; else dp[x][i][1]=1; } for(auto u:adj[x]){ if(u==once)continue; dfs(u,x); for(int i=0;i<M;i++){ ll int a=dp[u][i][0],b=dp[u][i][1]; int top=(dp[x][i][0]*b+dp[x][i][1]*a); cev+=(top<<i); int k=(arr[x]>>i)&1; dp[x][i][k]+=a; dp[x][i][k^1]+=b; } } } int main(){ lalala; int n;cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i]; cev+=arr[i]; } for(int i=0;i<n-1;i++){ int a,b;cin>>a>>b; adj[a].pb(b);adj[b].pb(a); } dfs(1,-1); cout<<cev<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...