题目链接:
最小生成树的变形,有的村庄已经连接了,就直接把他们的权值赋为0,一样的做最小生成树,Prim算法。
#include#include #define INF 0x3f3f3f3fint maps[105][105];bool vis[105];int dis[105];int n;int Prim(){ memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++) dis[i] = INF; int ans=0; dis[1] = 0; for(int i=1;i<=n;i++) { int tmp = INF,k=0; for(int j=1;j<=n;j++) { if(!vis[j]&&dis[j] maps[k][i]) dis[i] = maps[k][i]; } } return ans;}int main(){ scanf("%d",&n); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) scanf("%d",&maps[i][j]); int k; scanf("%d",&k); for(int i=0; i