#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
struct Fraction {
ll p, q;
bool operator<(const Fraction& other) const {
return (__int128)p * other.q < (__int128)other.p * q;
}
};
const int MAXN = 1000005;
vector<int> adj[MAXN];
int x[MAXN];
int f[MAXN]; // f[u] là độ dài chuỗi số 1 dài nhất kết thúc tại u (đi xuống lá)
Fraction best = {2000000000, 1};
void dfs1(int u, int p) {
f[u] = (x[u] == 1 ? 1 : 0);
int max_f = 0;
for (int v : adj[u]) {
if (v == p) continue;
dfs1(v, u);
if (x[u] == 1) max_f = max(max_f, f[v]);
}
f[u] += max_f;
}
void dfs2(int u, int p, int top_len) {
// Xét trường hợp đỉnh u là trung tâm của đường đi
vector<int> lens;
if (top_len > 0) lens.push_back(top_len);
for (int v : adj[u]) {
if (v != p && f[v] > 0) lens.push_back(f[v]);
}
sort(lens.rbegin(), lens.rend());
// Cập nhật kết quả cho đỉnh u
if (x[u] == 1) {
int L = 1;
if (lens.size() >= 1) L += lens[0];
if (lens.size() >= 2) L += lens[1];
Fraction cur = {1, L};
if (cur < best) best = cur;
} else {
int L = 1;
if (lens.size() >= 1) L += lens[0];
if (lens.size() >= 2) L += lens[1];
Fraction cur = {(ll)x[u], L};
if (cur < best) best = cur;
}
// Truyền dữ liệu xuống con
for (int v : adj[u]) {
if (v == p) continue;
int next_top = 0;
if (x[u] == 1) {
if (lens.size() >= 1 && f[v] == lens[0])
next_top = (lens.size() >= 2 ? lens[1] : 0) + 1;
else
next_top = (lens.size() >= 1 ? lens[0] : 0) + 1;
}
dfs2(v, u, next_top);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n; cin >> n;
for (int i = 0; i < n - 1; ++i) {
int u, v; cin >> u >> v;
adj[u].push_back(v); adj[v].push_back(u);
}
for (int i = 1; i <= n; ++i) {
cin >> x[i];
if (Fraction{x[i], 1} < best) best = {x[i], 1};
}
dfs1(1, 0);
dfs2(1, 0, 0);
ll g = __gcd(best.p, best.q);
cout << best.p / g << "/" << best.q / g << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKc3RydWN0IEZyYWN0aW9uIHsKICAgIGxsIHAsIHE7CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBGcmFjdGlvbiYgb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4gKF9faW50MTI4KXAgKiBvdGhlci5xIDwgKF9faW50MTI4KW90aGVyLnAgKiBxOwogICAgfQp9OwoKY29uc3QgaW50IE1BWE4gPSAxMDAwMDA1Owp2ZWN0b3I8aW50PiBhZGpbTUFYTl07CmludCB4W01BWE5dOwppbnQgZltNQVhOXTsgLy8gZlt1XSBsw6AgxJHhu5kgZMOgaSBjaHXhu5dpIHPhu5EgMSBkw6BpIG5o4bqldCBr4bq/dCB0aMO6YyB04bqhaSB1ICjEkWkgeHXhu5FuZyBsw6EpCkZyYWN0aW9uIGJlc3QgPSB7MjAwMDAwMDAwMCwgMX07Cgp2b2lkIGRmczEoaW50IHUsIGludCBwKSB7CiAgICBmW3VdID0gKHhbdV0gPT0gMSA/IDEgOiAwKTsKICAgIGludCBtYXhfZiA9IDA7CiAgICBmb3IgKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgaWYgKHYgPT0gcCkgY29udGludWU7CiAgICAgICAgZGZzMSh2LCB1KTsKICAgICAgICBpZiAoeFt1XSA9PSAxKSBtYXhfZiA9IG1heChtYXhfZiwgZlt2XSk7CiAgICB9CiAgICBmW3VdICs9IG1heF9mOwp9Cgp2b2lkIGRmczIoaW50IHUsIGludCBwLCBpbnQgdG9wX2xlbikgewogICAgLy8gWMOpdCB0csaw4budbmcgaOG7o3AgxJHhu4luaCB1IGzDoCB0cnVuZyB0w6JtIGPhu6dhIMSRxrDhu51uZyDEkWkKICAgIHZlY3RvcjxpbnQ+IGxlbnM7CiAgICBpZiAodG9wX2xlbiA+IDApIGxlbnMucHVzaF9iYWNrKHRvcF9sZW4pOwogICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgIGlmICh2ICE9IHAgJiYgZlt2XSA+IDApIGxlbnMucHVzaF9iYWNrKGZbdl0pOwogICAgfQogICAgc29ydChsZW5zLnJiZWdpbigpLCBsZW5zLnJlbmQoKSk7CgogICAgLy8gQ+G6rXAgbmjhuq10IGvhur90IHF14bqjIGNobyDEkeG7iW5oIHUKICAgIGlmICh4W3VdID09IDEpIHsKICAgICAgICBpbnQgTCA9IDE7CiAgICAgICAgaWYgKGxlbnMuc2l6ZSgpID49IDEpIEwgKz0gbGVuc1swXTsKICAgICAgICBpZiAobGVucy5zaXplKCkgPj0gMikgTCArPSBsZW5zWzFdOwogICAgICAgIEZyYWN0aW9uIGN1ciA9IHsxLCBMfTsKICAgICAgICBpZiAoY3VyIDwgYmVzdCkgYmVzdCA9IGN1cjsKICAgIH0gZWxzZSB7CiAgICAgICAgaW50IEwgPSAxOwogICAgICAgIGlmIChsZW5zLnNpemUoKSA+PSAxKSBMICs9IGxlbnNbMF07CiAgICAgICAgaWYgKGxlbnMuc2l6ZSgpID49IDIpIEwgKz0gbGVuc1sxXTsKICAgICAgICBGcmFjdGlvbiBjdXIgPSB7KGxsKXhbdV0sIEx9OwogICAgICAgIGlmIChjdXIgPCBiZXN0KSBiZXN0ID0gY3VyOwogICAgfQoKICAgIC8vIFRydXnhu4FuIGThu68gbGnhu4d1IHh14buRbmcgY29uCiAgICBmb3IgKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgaWYgKHYgPT0gcCkgY29udGludWU7CiAgICAgICAgaW50IG5leHRfdG9wID0gMDsKICAgICAgICBpZiAoeFt1XSA9PSAxKSB7CiAgICAgICAgICAgIGlmIChsZW5zLnNpemUoKSA+PSAxICYmIGZbdl0gPT0gbGVuc1swXSkKICAgICAgICAgICAgICAgIG5leHRfdG9wID0gKGxlbnMuc2l6ZSgpID49IDIgPyBsZW5zWzFdIDogMCkgKyAxOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBuZXh0X3RvcCA9IChsZW5zLnNpemUoKSA+PSAxID8gbGVuc1swXSA6IDApICsgMTsKICAgICAgICB9CiAgICAgICAgZGZzMih2LCB1LCBuZXh0X3RvcCk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgewogICAgICAgIGludCB1LCB2OyBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7IGFkalt2XS5wdXNoX2JhY2sodSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBjaW4gPj4geFtpXTsKICAgICAgICBpZiAoRnJhY3Rpb257eFtpXSwgMX0gPCBiZXN0KSBiZXN0ID0ge3hbaV0sIDF9OwogICAgfQoKICAgIGRmczEoMSwgMCk7CiAgICBkZnMyKDEsIDAsIDApOwoKICAgIGxsIGcgPSBfX2djZChiZXN0LnAsIGJlc3QucSk7CiAgICBjb3V0IDw8IGJlc3QucCAvIGcgPDwgIi8iIDw8IGJlc3QucSAvIGcgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=