func_code_string: #include <bits/stdc++.h>   using namespace std;   void bfs(int v, vector<vector<int> > &graf, vector<vector<int> > &dist) {     queue<int> q;     q.push(v);     while (!q.empty()) {       int p = q.front();       q.pop();       for (int i = 0; i < graf[p].size(); i++) {         int to = graf[p][i];         if (dist[v][to] != 1e9) continue;         dist[v][to] = dist[v][p] + 1;         q.push(to);       }     }   }   struct ship {     int pos, attack, fuel;   };   struct base {     int pos, def;   };   vector<bool> used;   vector<int> lnk;   bool dfs(int v, vector<vector<int> > &vv) {     used[v] = 1;     for (int i = 0; i < vv[v].size(); i++) {       int u = vv[v][i];       if (lnk[u] == -1 || !used[lnk[u]] && dfs(lnk[u], vv)) {         lnk[u] = v;         return true;       }     }     return false;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cout.tie(nullptr);     int n, m;     cin >> n >> m;     vector<vector<int> > dist(n + 1, vector<int>(n + 1, 1e9));     vector<vector<int> > graf(n + 1);     for (int i = 0; i < m; i++) {       int first, t;       cin >> first >> t;       graf[first].push_back(t);       graf[t].push_back(first);     }     for (int i = 1; i <= n; i++) dist[i][i] = 0;     for (int i = 1; i <= n; i++) bfs(i, graf, dist);     int second, b, k, h;     cin >> second >> b >> k >> h;     vector<ship> ships(second);     for (int i = 0; i < second; i++) {       cin >> ships[i].pos >> ships[i].attack >> ships[i].fuel;     }     vector<base> bases(b);     for (int i = 0; i < b; i++) {       cin >> bases[i].pos >> bases[i].def;     }     vector<vector<int> > vv(second);     for (int i = 0; i < second; i++) {       for (int j = 0; j < b; j++) {         int d = dist[ships[i].pos][bases[j].pos];         if (d <= ships[i].fuel && bases[j].def <= ships[i].attack)           vv[i].push_back(j);       }     }     int ans = 0;     used.resize(second);     lnk.resize(b, -1);     for (int i = 0; i < second; i++) {       used.assign(n, 0);       if (dfs(i, vv)) ans++;     }     cout << min(1LL * ans * k, 1LL * second * h);   }   