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...