hdu1233 - 还是通畅工程(最小生成树)
2016-09-03 18:36
399 查看
最小生成树模板题
prim算法
prim算法
#include <iostream> #include <cstdio> #define inf 999999999 using namespace std; int mapn[105][105],visit[105],dis[105]; int t,n,m,w,pos,minn; int prim() { visit[1]=1; int sum=0; for(int i=2;i<=t;i++) { visit[i]=0; dis[i]=mapn[i][1]; } for(int i=1;i<=t-1;i++) { minn=inf; for(int j=1;j<=t;j++) { if(!visit[j]&&minn>dis[j]) { minn=dis[j]; pos=j; } } sum+=minn; visit[pos]=1; for(int j=1;j<=t;j++) { if(!visit[j]&&mapn[pos][j]<dis[j]&&mapn[pos][j]!=inf) { dis[j]=mapn[pos][j]; } } } return sum; } int main() { while (cin>>t&&t) { for(int i = 1; i <= t; i++) dis[i] = inf; for(int i=1;i<=(t-1)*t/2;i++) { scanf("%d %d %d",&n,&m,&w); mapn [m]=mapn[m] =w; } cout<<prim()<<endl;; } return 0; }kruskal模板
# include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; const int N=105; const int INF=1<<30;//赋一个很大的数,左移一位相当于乘2 struct edge { int fr,to,w,nxt; bool operator < (const edge &a) const { return w<a.w; } }; int pre ,n,head ,cnt; edge e[N*(N-1)+5]; void add(int fr,int to,int w) { e[cnt].fr=fr; e[cnt].to=to; e[cnt].w=w; e[cnt].nxt=head[fr]; head[fr]=cnt++; } int fin(int x) { if(x==pre[x]) return x; return pre[x]=fin(pre[x]); } void Kruskal() { for(int i=1;i<=n;++i) pre[i]=i; sort(e,e+cnt); int ans=0; for(int i=0;i<cnt;++i){ int u=fin(e[i].fr); int v=fin(e[i].to); if(u!=v){ ans 4000 +=e[i].w; pre[u]=v; } } printf("%d\n",ans); } int main() { int a,b,c; while(scanf("%d",&n)&&n) { cnt=0; int m=n*(n-1)/2; memset(head,-1,sizeof(head)); while(m--) { scanf("%d%d%d",&a,&b,&c); add(a,b,c); add(b,a,c); } Kruskal(); } return 0; }
相关文章推荐
- [HDU](1233)还是通畅工程 ---最小生成树(图)
- **HDU-1233 还是通畅工程 ACM解题报告(kruskal+并查集求最小生成树)
- 最小生成树 hdu 1233 还是畅通工程
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
- 【最小生成树+kruskal】杭电 hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程 (自己种的第一棵最小生成树)
- 【最小生成树+Prim】杭电 hdu 1233 还是畅通工程
- HDU-1233 -还是畅通工程 -最小生成树
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
- hdu 1233 还是畅通工程【最小生成树入门】
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- hdu 1233 还是畅通工程(prim和kruskal最小生成树)
- Hdu1233 - 还是畅通工程 - 最小生成树
- hdu 1233 还是畅通工程【最小生成树入门】
- HDU 1233 还是畅通工程 (Kruscal 最小生成树)
- hdu 1233还是畅通工程 最小生成树(入门题)prim算法
- HDU 1233 还是畅通工程 最小生成树
- 最小生成树 HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程 最小生成树Kruskal算法(并查集)
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)