1 条题解
- 
  1
int n,m;
int a[100][100]; int vis[100]; int dis[100]; void init(){ memset(a,0x3f,sizeof(a)); memset(vis,0,sizeof(vis)); memset(dis,0x3f,sizeof(dis)); } int prim(){ int id=1; for(int i=1;i<=n;i++){ vis[id]=1; for(int j=1;j<=n;j++){ if(!vis[j] and a[id][j]<dis[j]){ dis[j]=a[id][j]; } } int k=1; for(int j=1;j<=n;j++){ if(!vis[j] and dis[k]>dis[j])k=j; } id=k; } int sum=0; for(int i=2;i<=n;i++){ sum+=dis[i]; } return sum; } int main(){ while(cin>>n and n){ init(); cin>>m; while(m--){ int u,v,w; cin>>u>>v>>w; a[v][u]=a[u][v]=min(a[u][v],w); } cout<<prim()<<endl; } return 0; }
 
信息
- ID
 - 1333
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 10
 - 标签
 - 递交数
 - 23
 - 已通过
 - 0
 - 上传者