用priority_queue和结构体重载运算符做的, Wa3~10
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int dis[5010][5010],n,m,ans=0;
bool st[5010];
struct Line{
int val,num;
bool operator > (const Line t)const{
return val<t.val;
}
bool operator < (const Line t)const{
return val>t.val;
}
};
priority_queue<Line> q;
signed main(){
cin>>n>>m;
int x,y,z;
for(int i=1;i<=m;i++){
cin>>x>>y>>z;
if(dis[x][y]!=0){
if(dis[x][y]>z){
dis[x][y]=z;
dis[y][x]=z;
}
}
else{
dis[x][y]=z;
dis[y][x]=z;
}
}
Line add;
for(int i=1;i<=n;i++){
if(dis[1][i]!=0){
add.val=dis[1][i];
add.num=i;
q.push(add);
}
}
st[1]=1;
Line now;
for(int i=1;i<n;i++){
now=q.top();
q.pop();
st[now.num]=1;
ans+=now.val;
for(int j=1;j<=n;j++){
if(dis[now.num][j]!=0&&st[j]==0){
add.val=dis[now.num][j];
add.num=j;
q.push(add);
}
}
}
for(int i=1;i<=n;i++){
if(st[i]==0){
cout<<"orz";
return 0;
}
}
cout<<ans;
return 0;
}