func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 5e3 + 3, M = 1e5 + 3;   const double eps = 1e-7;   int n, m, k, u[M], v[M], id[M];   double w[M];   bool vis[M];   struct dsu {     int fa[N];     inline void init(int range) {       for (register int i = (1); i <= (range); ++i) fa[i] = i;     }     int Fnd(int u) { return fa[u] == u ? u : fa[u] = Fnd(fa[u]); }   } D;   inline bool cmp(int A, int B) { return w[A] < w[B]; }   int res, tmp;   inline int chk(double mid) {     for (register int i = (1); i <= (m); ++i) id[i] = i, vis[i] = 0;     for (register int i = (1); i <= (m); ++i)       if (u[i] == 1 || v[i] == 1) w[i] += mid;     sort(id + 1, id + m + 1, cmp);     D.init(n);     res = 0, tmp = 0;     double val = 0;     for (register int i = (1); i <= (m); ++i) {       int Fu = D.Fnd(u[id[i]]), Fv = D.Fnd(v[id[i]]);       if (Fu == Fv) continue;       D.fa[Fu] = Fv;       vis[id[i]] = 1;       tmp++;       if (u[id[i]] == 1 || v[id[i]] == 1) {         res++;       }       if (tmp == n - 1) break;     }     for (register int i = (1); i <= (m); ++i)       if (u[i] == 1 || v[i] == 1) w[i] -= mid;     return res;   }   int main() {     scanf( %d%d%d , &n, &m, &k);     if (k == 0) {       if (n > 1)         puts( -1 );       else         puts( 0 );       return 0;     }     for (register int i = (1); i <= (m); ++i) {       static int ___;       scanf( %d%d%d , u + i, v + i, &___);       w[i] = (double)___ + eps * 1.0 * i;     }     double L = -1e7, R = 1e7, mid;     while (L + eps < R) {       mid = (L + R) / 2;       if (chk(mid) > k)         L = mid;       else         R = mid;     }     if (chk(L) != k) chk(R);     printf( %d n , n - 1);     for (register int i = (1); i <= (m); ++i)       if (vis[i]) printf( %d  , i);     return 0;   }   