func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long oo = 1e18;   vector<int> dinh;   int nn;   long long n, m, k, kc[801][801];   vector<pair<long long, pair<long long, long long>>> e;   void compress() {     sort(dinh.begin(), dinh.end());     dinh.resize(unique(dinh.begin(), dinh.end()) - dinh.begin());     nn = dinh.size();     for (long long i = 0; i <= nn - 1; i++)       for (long long j = 0; j <= nn - 1; j++) kc[i][j] = oo;     for (long long i = 0; i <= nn - 1; i++) kc[i][i] = 0;     for (long long i = 0; i <= min(m, k) - 1; i++) {       long long first =           lower_bound(dinh.begin(), dinh.end(), e[i].second.first) - dinh.begin();       long long second =           lower_bound(dinh.begin(), dinh.end(), e[i].second.second) -           dinh.begin();       kc[first][second] = kc[second][first] = min(kc[first][second], e[i].first);     }   }   void floyd() {     for (long long k = 0; k <= nn - 1; k++)       for (long long first = 0; first <= nn - 1; first++)         for (long long second = 0; second <= nn - 1; second++)           kc[first][second] =               min(kc[first][second], kc[first][k] + kc[k][second]);   }   int main() {     cin >> n >> m >> k;     for (long long i = 0; i <= m - 1; i++) {       long long first, second, w;       cin >> first >> second >> w;       e.push_back({w, {first - 1, second - 1}});     }     sort(e.begin(), e.end());     for (long long i = 0; i <= min(m, k) - 1; i++) {       dinh.push_back(e[i].second.first);       dinh.push_back(e[i].second.second);     }     compress();     floyd();     vector<long long> res;     for (long long i = 0; i <= nn - 1; i++)       for (long long j = 0; j <= i - 1; j++) res.push_back(kc[i][j]);     sort(res.begin(), res.end());     cout << res[k - 1];     return 0;   }   