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) 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++; } } }