tijie
2024-02-01 10:35:41
发布于:广东
14阅读
0回复
0点赞
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int n,e,a,b,k;
int mapp[1001][1001],vis[100001],low[100001],sum;
void prim(){
int temp;
int k;
sum=0;
memset(vis,0,sizeof(vis));
vis[0]=1;
for(int i=0;i<n;i++)
low[i]=mapp[0][i];
for(int i=0;i<n;i++){
temp=inf;
for(int j=0;j<n;j++)
if(!vis[j]&&temp>low[j])temp=low[j],k=j;
if(temp==inf)break;
vis[k]=1;
sum+=temp;
for(int j=0;j<n;j++)
if(!vis[j]&&low[j]>mapp[k][j])low[j]=mapp[k][j];
}
}
int main(){
int t;
cin>>t;
while(t--){
memset(mapp,inf,sizeof(mapp));
cin>>n>>e;
for(int i=0;i<n;i++)
mapp[i][i]=0;
for(int i=1;i<=e;i++){
cin>>a>>b>>k;
mapp[a][b]=k;
mapp[b][a]=k;
}
prim();
cout<<sum<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个