int main() { //freopen("in.cpp","r",stdin); int T,m, i, j,k, f, t, d,root; int cas=1; scanf("%d", &T); while(T--) { printf("Case %d: ",cas++); scanf("%d %d %d", &n, &m,&root); root++; for(i = 1; i <= n; ++i) for(j = i; j <= n; ++j) e[i][j] = e[j][i] = INF; for(i = 0; i < m; i++) { scanf("%d%d%d", &f, &t, &d); ++f; ++t; e[f][t] = d; } cnt = 0; memset(u, false, sizeof(u)); dfs(root); if(cnt != n) puts("impossible"); else { ans = 0; zhuliu(root); printf("%d\n",ans); } } return 0; }
int main() { while (scanf("%d%d",&n,&m) != EOF) { init(n); for (int i = 0; i < m; i++) { scanf("%d%d%d",&u,&v,&cost); if (u == v) continue; dis[u][v] = std::min(dis[u][v],cost); } L = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (dis[i][j] != inf) { e[L].u = i; e[L].v = j; e[L++].cost = dis[i][j]; } printf("%d\n",zhuliu(0,n,L,e)); } return 0; }