func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m;   struct node {     int u, v, w;     friend bool operator<(node a, node b) { return a.w > b.w; }   } itm[200005];   int fa[200005];   int gf(int x) {     if (x != fa[x]) return fa[x] = gf(fa[x]);     return fa[x];   }   int main() {     while (~scanf( %d%d , &n, &m)) {       for (int i = 1; i <= n; i++) fa[i] = i;       priority_queue<node> q;       for (int i = 0; i < m; i++) {         scanf( %d%d%d , &itm[i].u, &itm[i].v, &itm[i].w);         q.push(itm[i]);       }       int cnt = 0, ans = 0;       while (!q.empty() && cnt < (n - 1)) {         node sta = q.top();         q.pop();         queue<node> q1, q2;         q1.push(sta);         while (!q.empty() && q.top().w == sta.w) {           q1.push(q.top());           q.pop();         }         while (!q1.empty()) {           node cur = q1.front();           q1.pop();           int f1 = gf(cur.u);           int f2 = gf(cur.v);           if (f1 != f2) q2.push(cur);         }         if (!q2.empty()) {           node cur = q2.front();           q2.pop();           int f1 = gf(cur.u);           int f2 = gf(cur.v);           fa[f1] = f2;           cnt++;           while (!q2.empty()) {             node tp = q2.front();             q2.pop();             f1 = gf(tp.u);             f2 = gf(tp.v);             if (f1 == f2)               ans++;             else               fa[f1] = f2, cnt++;           }         }       }       printf( %d n , ans);     }     return 0;   }   