Submission #161702

#TimeUsernameProblemLanguageResultExecution timeMemory
161702MohamedAhmed04Mag (COCI16_mag)C++14
0 / 120
588 ms185880 KiB
#include <bits/stdc++.h> using namespace std ; const int MAX = 1e6 + 10 ; vector< vector<int> >adj(MAX) ; long long arr[MAX] ; pair<long long , long long>dp[MAX] ; int n ; pair<long long , long long>p ; long double x , y , z ; long double f(pair<long long , long long>pp) { long double a = pp.first * 1.00 ; long double b = pp.second * 1.00 ; return (a / b) ; } void dfs(int node , int par) { p.first = arr[node] , p.second = 1ll ; dp[node] = p ; for(auto &child : adj[node]) { if(child == par) continue ; dfs(child , node) ; x = f(dp[child]) ; y = f(dp[node]) ; p.first = dp[child].first * arr[node] , p.second = dp[child].second+1ll ; z = f(p) ; if(x <= y && x <= z) dp[node] = dp[child] ; else if(z <= x && z <= y) dp[node] = p ; } } int main() { ios_base::sync_with_stdio(0) ; cin.tie(0) ; cin>>n ; for(int i = 0 ; i < n-1 ; ++i) { int x , y ; cin>>x>>y ; adj[x].push_back(y) ; adj[y].push_back(x) ; } for(int i = 1 ; i <= n ; ++i) cin>>arr[i] ; dfs(1 , -1) ; long long g = __gcd(dp[1].first , dp[1].second) ; return cout<<dp[1].first/g<<"/"<<dp[1].second/g<<"\n" , 0 ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...