prim
int prim(int x,int n)
{
int sum=0;
memset(visit,false,sizeof(visit));
for(int i=1;i<=n;i++)
dis[i]=mp[x][i];
dis[x]=0;
visit[x]=true;
for(int i=1;i<=n;i++)
{
int k,mincost=INF;
for(int j=1;j<=n;j++)
if(!visit[j]&&dis[j] mincost=dis[k=j]; if(mincost==INF) break; visit[k]=true; sum+=mincost; for(int j=1;j<=n;j++) { if(!visit[j]&&dis[j]>mp[k][j]) dis[j]=mp[k][j]; } } return sum; } Kruskal int F(int x){return fat[x]==x?x:F(fat[x]);} void join(int x,int y) { int fx=F(x); int fy=F(y); if(fy!=fx)fat[fy]=fx; } void kruskal() { for(int i=1;i<=m;i++) { if(k==n-1)break; if(F(g[i].u)!=F(g[i].v)) { join(g[i].u,g[i].v); sum+=g[i].di;k++; } } } ©著作权归作者所有:来自51CTO博客作者qinXpeng的原创作品,如需转载,请注明出处,否则将追究法律责任



