func_code_string: #include <bits/stdc++.h>   using namespace std;   const int M = 200005;   int n, m, tot, ans;   struct Node {     int u, v, w;   } node[M];   int vis[M], match[M];   int sum1[M], sum2[M];   int head[M], Nxt[M], ver[M];   bool v[M], flag = 0;   vector<int> e[M];   inline bool dfs(long long x) {     for (int i = 0; i < e[x].size(); i++) {       long long y = e[x][i];       if (!vis[y]) {         vis[y] = 1;         if (!match[y] || dfs(match[y])) {           match[y] = x;           return 1;         }       }     }     return 0;   }   bool cmp(Node a, Node b) { return a.w > b.w; }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++) {       scanf( %d%d%d , &node[i].u, &node[i].v, &node[i].w);       sum1[node[i].u]++;       sum2[node[i].v]++;       e[node[i].u].push_back(node[i].v);     }     for (int i = 1; i <= n; i++) {       memset(vis, 0, sizeof(vis));       if (dfs(i)) ans++;     }     if (ans != n) {       printf( -1 n );       return 0;     }     sort(node + 1, node + 1 + m, cmp);     for (int i = 1; i <= m; i++) {       sum1[node[i].u]--;       sum2[node[i].v]--;       if (sum1[node[i].u] == 0 || sum2[node[i].v] == 0) {         printf( %d n , node[i].w);         return 0;       }     }     return 0;   }   