제출 #98269

#제출 시각아이디문제언어결과실행 시간메모리
98269dalgerokMag (COCI16_mag)C++17
24 / 120
549 ms138460 KiB
#include<bits/stdc++.h> using namespace std; const int N = 1e6 + 5; int n, a[N], dp[N], ans = -1; vector < int > g[N]; void dfs(int v, int pr = -1){ int mx1 = 0, mx2 = 0; for(int to : g[v]){ if(to != pr){ dfs(to, v); if(dp[to] > mx1){ mx2 = mx1; mx1 = dp[to]; } else if(dp[to] > mx2){ mx2 = dp[to]; } } } if(a[v] == 1){ dp[v] = mx1 + 1; ans = max(ans, mx1 + mx2 + 1); } } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n; for(int i = 1; i < n; i++){ int x, y; cin >> x >> y; g[x].push_back(y); g[y].push_back(x); } ans = -1; for(int i = 1; i <= n; i++){ cin >> a[i]; if(a[i] == 1){ ans = 1; } } dfs(1); if(ans != -1){ return cout << "1/" << ans, 0; } ans = 2e9; for(int i = 1; i <= n; i++){ ans = min(ans, a[i]); } cout << ans << "/1"; }
#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...