#include<bits/stdc++.h>
using namespace std;
const int inf=INT_MAX;
struct node {
int v,w,next;
}e[5005<<1];
int head[5005],dis[5005],cnt,n,m,tot,num=0,mst;
bool vis[5005];
void add(int u,int v,int w){
e[++cnt].v=v;
e[cnt].w=w;
e[cnt].next=head[u];
head[u]=cnt;
}
int prim(){
int now=1;
for(int i=2;i<=n;i++){
dis[i]=inf;
}
for(int i=head[1];i!=0;i=e[i].next){
dis[e[i].v]=min(e[i].w,dis[e[i].v]);
}
while(num<n-1){
int minn=inf;
vis[now]=1;
for(int i=1;i<=n;i++){
if(minn>dis[i]&&!vis[i]){
minn=dis[i];
now=i;
}
}
mst+=minn;
num++;
for(int i=head[now];i!=0;i=e[i].next){
if(dis[e[i].v]>e[i].w&&!vis[e[i].v]) dis[e[i].v]=e[i].w;
}
}
return mst;
}
int main(){
cin>>n>>m;
int u,v,w;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
if(cnt/2==m)
printf("%d",prim());
else printf("orz");
}
评测记录