最小生成树(模板)
来源:互联网 发布:淘宝ifashion怎么报名 编辑:程序博客网 时间:2024/05/16 18:14
struct edges{ int u,v,w;}edge[110];int B[1000];int fine(int x){ if(x!=B[x]) B[x]=fine(B[x]); return B[x];}int cmp(edges a,edges b){ return a.w<b.w;}void kru( ){ int ans=0,i,k=0; for(i=1;i<=m;i++) B[i]=i; for(i=0;i<n;i++) { int xx=fine(edge[i].u); int yy=fine(edge[i].v); if(xx!=yy) { B[xx]=yy; k++; ans+=edge[i].w; } } if(k!=m-1)printf("?\n"); else printf("%d\n",ans);}
时间复杂度为O(mlogm+m),主要在对边的排序
void prim(){ int u,minn=inf,i,j,ans=0; int dis[110]; int vis[110]; for(i=1;i<=n;i++) { dis[i]=mmap[1][i]; vis[i]=0; } dis[1]=0; vis[1]=1; for(i=0;i<n-1;i++) { u=0;minn=inf; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]<minn) { minn=dis[j]; u=j; } } if(u==0)return; ans+=minn; vis[u]=1; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]>mmap[u][j]) { dis[j]=mmap[u][j]; } } } printf("%d\n",ans);}
时间和空间复杂度都是O(n^2)
0 0
- 最小生成树模板
- 最小生成树模板
- 最小生成树---模板
- 最小生成树模板
- 最小生成树 模板
- 最小生成树(模板)
- 最小生成树模板
- 最小生成树模板
- 最小生成树模板
- 最小生成树【模板】
- 最小生成树【模板】
- 最小生成树模板
- 最小生成树模板
- 最小生成树 模板
- 最小生成树模板.
- 最小生成树模板
- 【模板】最小生成树
- 最小生成树模板
- HTTP客户端服务
- Freemarker中如何遍历list
- 项目管理---敏捷开发---到底要不要写文档?
- HTTPClient六 高级主题
- hdu 1695 容斥原理或莫比乌斯反演
- 最小生成树(模板)
- 安卓之Observer内容观察者的原理
- Openstack安全更新的流程和机制
- Maven常用命令
- 序列
- [坑] Computer Systems
- 使用ifstream ofstream重定向输入输出 c++
- CentOS上可用的nginx启动脚本
- fedora20给firefox安装flash插件