次小生成树
来源:互联网 发布:助眠方法知乎 编辑:程序博客网 时间:2024/05/21 08:50
#include<stdio.h>#include<string.h>#include<stdlib.h>const int maxn=30010,maxm=150010,INF=100000000;struct node{int x,y,w,f;};struct node a[maxm],tmp;int f[maxn],rank[maxn],pre[maxn],pres[maxn],p[maxn],n,ansx[maxm];int e,to[maxm],next[maxm],begin[maxn],ss[maxm];void qsort(int l,int r){int mid=a[(l+r)/2].w,i,j;i=l;j=r;while(i<=j){while(i<=j && a[i].w<mid)i++;while(i<=j && a[j].w>mid)j--;if(i<=j){tmp=a[i];a[i]=a[j];a[j]=tmp;i++;j--;}}if(l<j)qsort(l,j);if(i<r)qsort(i,r);}int fa(int u){if(f[u]!=u)f[u]=fa(f[u]);return f[u];}int find(int u,int v){return fa(u)==fa(v)?0:1;}void link(int u,int v){if(rank[fa(u)]>=rank[fa(v)]){f[fa(v)]=fa(u);rank[fa(u)]++;}else{f[fa(u)]=fa(v);rank[fa(v)]++;}}void dfs(int u,int v){int i,j,k;if(u==v)return;p[u]=1;for(i=begin[u];i;i=next[i]){k=to[i];if(!p[k]){pre[k]=u;pres[k]=ss[i];dfs(k,v);}}}int main(){#ifndef ONLINE_JUDGEfreopen("prim2.in","r",stdin);freopen("kruscal.out","w",stdout);#endifint i,j,k,m,s;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)f[i]=i;for(i=1;i<=m;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);qsort(1,m);s=n-1;i=0;int ans=0;while(s && i<=m){i++;if(find(a[i].x,a[i].y)){link(a[i].x,a[i].y);to[++e]=a[i].y;next[e]=begin[a[i].x];begin[a[i].x]=e;ss[e]=a[i].w;to[++e]=a[i].x;next[e]=begin[a[i].y];begin[a[i].y]=e;ss[e]=a[i].w;a[i].f=1;s--;ans+=a[i].w;}}printf("%d\n",ans);int t=0;for(i=1;i<=m;i++){if(a[i].f==0){memset(p,0,sizeof(p));dfs(a[i].x,a[i].y);j=a[i].y;int max=0;while(j!=a[i].x){if(pres[j]>max)max=pres[j];j=pre[j];}ansx[++t]=ans-max+a[i].w;}}int minans=INF;for(i=1;i<=t;i++)if(ansx[i]!=ans && ansx[i]<minans)minans=ansx[i];printf("%d\n",minans);return 0;}
2 0
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- 次小生成树
- fcntl使用说明
- EntityFramework中常用的数据删除方式
- 从android相册获取所有图片的路径
- 黑马程序员--JDK新特性
- mysql安装,无法登录问题,查看用户,远程登录
- 次小生成树
- 简单实现Socks5代理(Python&C#)
- 笔试面试错题集1
- Virtualbox下NAT和桥接网络配置
- restFul_SpringMvc
- 三角形判断和计算面积(C++实现)
- php设置cookie与取cookie的值
- 少壮不努力,老大背单词
- 关于在3dmax 导入再导出FBX到unity中的尺寸选项问题