HDU-#1233 还是畅通工程(Prim & Kruskal)
来源:互联网 发布:网络教育培训加盟 编辑:程序博客网 时间:2024/05/16 11:53
题目大意:中文题目,并且是畅通工程的第三个版本不解释了,就是一道MST问题。
解题思路:很裸的一道MST,上一题的1102给出了详细的说明这里就不给出来了,发现这种题目最容易出错的是下标的控制,还是没有理解透彻,不能够灵活运用呀。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1233
Prim code:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 105;const int INF =0x3fffffff;int n,a,b,c;int map[MAXN][MAXN],vis[MAXN],dist[MAXN];int Prim(){ int sum=0; for(int i=1;i<=n;i++) dist[i]=(i==1?0:map[1][i]); memset(vis,0,sizeof(vis)); vis[1]=1; for(int i=1;i<n;i++){ int pos,minn=INF; for(int j=1;j<=n;j++) if(!vis[j] && dist[j]<minn) minn=dist[pos=j]; vis[pos]=1; sum+=minn; for(int k=1;k<=n;k++) if(!vis[k] && dist[k]>map[pos][k]) dist[k]=map[pos][k]; } return sum;}int main(){ while(scanf("%d",&n)!=EOF && n){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) map[i][j]=INF; for(int i=1;i<=n*(n-1)/2;i++){ scanf("%d%d%d",&a,&b,&c); map[a][b]=map[b][a]=c; } int ans=Prim(); printf("%d\n",ans); } return 0;}
Kruskal code:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN =100+10;int n,tmp;int p[MAXN];struct edge{ int u,v,w;}e[MAXN*MAXN];int cmp(const edge a,const edge b){return a.w<b.w;}int find(int x){return x==p[x]?x:find(p[x]);}int Kruskal(){ int ans=0; for(int i=1;i<=n;i++) p[i]=i; sort(e+1,e+1+tmp,cmp); for(int i=1;i<=tmp;i++){ int x=find(e[i].u); int y=find(e[i].v); if(x!=y){ p[x]=y; ans+=e[i].w; } } return ans;}int main(){ while(scanf("%d",&n)!=EOF && n){ tmp=n*(n-1)/2; for(int i=1;i<=tmp;i++) scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); int ans=Kruskal(); printf("%d\n",ans); } return 0;}
0 0
- hdu 1233 还是畅通工程(prim||kruskal)
- HDU-#1233 还是畅通工程(Prim & Kruskal)
- HDU 1233 还是畅通工程(kruskal&&prim)
- HDU 1223--还是畅通工程【prim && kruskal】
- hduoj-1233 还是畅通工程(Prim + Kruskal)
- HDU:1233 还是畅通工程(kruskal)
- 【hdu 1233】还是畅通工程(kruskal)
- HDU 1233 还是畅通工程(Kruskal)
- hdu 1233 还是畅通工程(prim)
- HDU.1233 还是畅通工程(Prim)
- HDU 1233 还是畅通工程(prim)
- 杭电-1233还是畅通工程(kruskal,prim)
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
- hdu 1233 还是畅通工程(最小生成树,prim,kruskal)
- HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)
- HDU-#1863 畅通工程(Kruskal & Prim)
- hdu 1863 畅通工程(prim+kruskal)
- HDU 1233还是畅通工程 (Kruskal)
- poj2253
- oracle 11g streams 传播进程使用示例
- 刻录U盘系统和win7+ubuntu 13.04双系统安装方法
- 140807暑期培训.txt
- javascript实现页面分栏
- HDU-#1233 还是畅通工程(Prim & Kruskal)
- JavaSE基础知识总结
- 统治世界的十大算法
- 二叉搜索树(算法导论第12章)
- 开门人和关门人 【杭电-HDOJ-1234】
- jsp 四大域范围
- poj1862~Stripies~贪心+优先队列
- UVA11039- Building designing
- 设计模式C++实现——工厂模式