#include #include using namespace std; using ld = long double; ld dfs(int u, const vector>& g, const vector&c, vector&e){ e[u] = 0; for(auto v : g[u]) e[u] = max(e[u], dfs(v,g,c,e)); return e[u] = max(e[u], c[u] + e[u]/2); } int main(){ int n,m,u,v; cin >> n >> m; vector c(n), e(n, -1); vector> g(n); for(auto &x : c) cin >> x; while(m--) cin >> u >> v, g[u].push_back(v); cout << dfs(0, g, c, e) << endl; }