제출 #217761

#제출 시각아이디문제언어결과실행 시간메모리
217761VEGAnnMag (COCI16_mag)C++14
120 / 120
537 ms150904 KiB
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) #define pii pair<int, int> #define ft first #define sd second #define all(x) x.begin(),x.end() using namespace std; typedef long double ld; typedef long long ll; const int N = 1000100; const ll OO = 1e18; const int oo = 2e9; vector<int> g[N]; int n, mn, a[N], ansp, ansq, mx[N], mx1[N], mx2[N]; bool smaller(int p, int q){ return ll(p) * ll(ansq) < ll(ansp) * ll(q); } void dfs(int v, int p){ mx1[v] = mx2[v] = 0; for (int u : g[v]){ if (u == p) continue; dfs(u, v); if (mx1[v] < mx[u]){ mx2[v] = mx1[v]; mx1[v] = mx[u]; } else if (mx2[v] < mx[u]) mx2[v] = mx[u]; } if (a[v] == 1) mx[v] = mx1[v] + 1; else mx[v] = 0; } void DFS(int v, int p, int cr){ for (int u : g[v]){ if (u == p) continue; int Cr = 0; if (a[v] == 1) { if (mx[u] == mx1[v]) Cr = max(cr + 1, mx2[v] + 1); else Cr = max(cr + 1, mx1[v] + 1); } DFS(u, v, Cr); } int Mx1 = mx1[v], Mx2 = mx2[v]; if (Mx1 < cr){ Mx2 = Mx1; Mx1 = cr; } else if (Mx2 < cr) Mx2 = cr; if (smaller(a[v], Mx1 + Mx2 + 1)){ ansp = a[v]; ansq = Mx1 + Mx2 + 1; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); cin >> n; for (int i = 1; i < n; i++){ int u, v; cin >> u >> v; u--; v--; g[v].push_back(u); g[u].push_back(v); } mn = oo; for (int i = 0; i < n; i++){ cin >> a[i]; mn = min(mn, a[i]); } if (mn > 1){ cout << mn << "/1"; return 0; } ansp = ansq = 1; dfs(0, -1); DFS(0, -1, 0); int gc = __gcd(ansp, ansq); cout << ansp / gc << "/" << ansq / gc << '\n'; return 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...