可当做prim模板题
#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f3f
int n,lowcost[110],dis[110][110],vis[110];
int prim()
{
int i,j,k,ans=0,tmp;
for(i=1;i<=n;i++)lowcost[i]=INF;
lowcost[1]=0;
for(i=1;i<=n;i++)
{
tmp=INF;
for(j=1;j<=n;j++)
if(tmp>lowcost[j]&&!vis[j])
{
tmp=lowcost[j];
k=j;
}
vis[k]=1;
for(j=1;j<=n;j++)
if(!vis[j]&&lowcost[j]>dis[k][j]&&dis[k][j]!=INF)
lowcost[j]=dis[k][j];
}
for(i=1;i<=n;i++)
ans+=lowcost[i];
return ans;
}
int main()
{
//freopen("in.txt","r",stdin);
int q,a,b,i,j;
while(scanf("%d",&n)!=EOF)
{
memset(dis,0x3f,sizeof(dis));
memset(vis,0,sizeof(vis));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&dis[i][j]);
scanf("%d",&q);
for(i=1;i<=q;i++)
{
scanf("%d%d",&a,&b);
dis[a][b]=0;
dis[b][a]=0;
}
int ans=prim();
printf("%d\n",ans);
}
return 0;
}