Submission #167642

#TimeUsernameProblemLanguageResultExecution timeMemory
167642EntityITMag (COCI16_mag)C++14
24 / 120
490 ms79208 KiB
#include<bits/stdc++.h> using namespace std; #define all(x) (x).begin(), (x).end() #define sz(x) ( (int)(x).size() ) #define fi first #define se second using LL = long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count() ); int n; vector<int> x, dep; vector<vector<int> > gr; int dfs(int u, int pr) { dep[u] = dep[pr] + 1; int ret = u; for (int v : gr[u]) if (v != pr && x[v] == 1) { int tmp = dfs(v, u); if (dep[tmp] > dep[ret]) ret = tmp; } return ret; } void solve(int u, int pr, int& mx) { dep[u] = dep[pr] + 1; mx = max(mx, dep[u]); for (int v : gr[u]) if (v != pr && x[v] == 1) solve(v, u, mx); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; gr.assign(n, {} ); for (int i = 0; i < n - 1; ++i) { int u, v; cin >> u >> v; --u; --v; gr[u].emplace_back(v); gr[v].emplace_back(u); } x.assign(n, 0); for (int i = 0; i < n; ++i) cin >> x[i]; if (!count(all(x), 1) ) { cout << *min_element(all(x) ) << "/1\n"; cout.flush(); return 0; } dep.assign(n, -1); int ans = 0; for (int u = 0; u < n; ++u) if (dep[u] == -1 && x[u] == 1) { int rt = dfs(u, u); dep[rt] = 0; solve(rt, rt, ans); } cout << "1/" << ans << '\n'; cout.flush(); 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...