目录
题目链接
22NYIST最小生成树专题 [Cloned] - Virtual Judge (csgrandeur.cn)
一些话
输出结果全为0,检查了数据正常读入后,发现初始化数组把st写成了dist,导致全变0
流程
读题找n,m和边,再套模板
套路
ac代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 110;
int g[N][N],dist[N];
bool st[N];
int n,m;
int prim(){
memset(dist,0x3f,sizeof dist);
memset(st,false,sizeof st);//输出结果全为0,检查了数据正常读入后,发现此处初始化数组写成了dist,导致全变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[j] < dist[t])) t = j;
}
if(i) res += dist[t];
st[t] = true;
for(int j = 1;j <= n;j++){
dist[j] = min(dist[j],g[t][j]);
}
}
return res;
}
int main(){
while(cin >> n && n){
memset(g,0x3f,sizeof g);
cin >> m;
for(int i = 1;i <= m;i++){
int a,b,w;
cin >> a >> b >> w;
g[a][b] = g[b][a] = min(g[a][b],w);
// cout << a << " " << b << ' ' << g[a][b] << endl;
}
int t = prim();
cout << t << endl;
}
return 0;
}