#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef int JQK;int n, m, k, dis[205][205]; int main() { int u, v, c; scanf("%d %d %d", &n, &m, &k); memset(dis, 63, sizeof(dis)); for (int i = 1; i <= m; i++) { scanf("%d %d %d", &u, &v, &c); dis[u][v] = dis[v][u] = min(dis[u][v], c); } for (int k = 0; k <= n; k++) { for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++) { if (k <= i || k <= j) dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); } } } int s, t; s = 2 * (n + 1) + 2, t = s + 1; MCMF::MAXP = t + 1; MCMF::init(s, t); MCMF::addedge(s, 0, k, 0); for (int i = 1; i <= n; i++) { MCMF::addedge(s, i, 1, 0); MCMF::addedge(i + n, t, 1, 0); } for (int i = 0; i <= n; i++) { for (int j = i + 1; j <= n; j++) { MCMF::addedge(i, j + n, 1, dis[i][j]); } } cout << MCMF::mcmf(); return 0; }