int prim() { int sum=0; dis[1]=0; for(int i=1;i<=n;i++) { int pos,t=inf; for(int j=1;j<=n;j++) { if(hash[j]==0) { if(dis[j]<t) { t=dis[j]; pos=j; } } } hash[pos]=1; if(pos==n) break; for(int j=1;j<=n;j++) { if(hash[j]==0) { if(map[pos][j]!=inf&&map[pos][j]<dis[j]) dis[j]=map[pos][j]; } } } for(int i=1;i<=n;i++) { sum+=dis[i]; } return sum;//全省畅通的最小费用。 }//最小生成树