朴素版Prim
include[HTML_REMOVED]
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 510, M = 100010, INF = 0x3f3f3f3f;
int n,m;
int g[N][N];
int dist[N];
bool st[N];
int prim(){
memset(dist,0x3f,sizeof dist);
dist[1] = 0;
int res = 0;
for(int i = 0; i<n ; i++){
int t = -1;
for(int j = 1;j <= n;j++){
if(!st[j]&&(t == -1|| dist[t]> dist[j]))
t = j;
}
if(dist[t] == INF) return INF;
st[t] = true;
res += dist[t];
for(int j = 1; j<=n ;j++){
dist[j] = min(dist[j], g[t][j]);
}
}
return res;
}
int main(){
memset(g, 0x3f,sizeof g);
cin>>n>>m;
while(m--){
int a,b,c;
cin>>a>>b>>c;
g[a][b] = g[b][a] = min(g[a][b], c);
}
int res = prim();
if(res == INF) puts("impossible");
else cout<<res<<endl;
return 0;
}