#include #include using namespace std; using ll=long long; using pll=pair; using tll=tuple; using ld=long double; const ll INF=(1ll<<60); #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define all(v) v.begin(),v.end() template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> k >> n >> m; atcoder::mcf_graph g(n+2); while(k--){ ll a; cin >> a; a--; g.add_edge(n,a,1,0); } rep(i,n){ ll b; cin >> b; g.add_edge(i,n+1,b,0); } while(m--){ ll u,v,d; cin >> u >> v >> d; u--; v--; g.add_edge(u,v,INF,d); g.add_edge(v,u,INF,d); } cout << g.flow(n,n+1).second << '\n'; }