poj 2075=最小生成树Kruskal算法
来源:互联网 发布:ipad怎么备份所有数据 编辑:程序博客网 时间:2024/06/05 10:34
题意很好理解,但是应该注意映射,应该从1开始,因为不存在时返回0,边就要从1开始找,就这样wa了两次。
#include<cstdio>#include<cstring>#include<string>#include<iostream>#include<algorithm>#include<map>#define N 5000using namespace std;int p[N],u[N],v[N];double w[N];map<string,int>s;bool cmp(const int a,const int b){return w[a]<w[b];}int find(int x){return p[x]==x?x:p[x]=find(p[x]);}double kruskal(int n,int m){int i,j,r[N];double ans=0;for(i=0;i<n;i++)p[i]=i;for(i=1;i<=m;i++)r[i]=i;sort(r+1,r+m+1,cmp);for(i=1;i<=m;i++){int e=r[i];int x=find(u[e]);int y=find(v[e]);if(x!=y){ans+=w[e];p[x]=y;}}return ans;}int main(){int i,j,k,n,m;double lim,ans;char ch[50];cin>>lim;cin>>n;getchar();for(i=1;i<=n;i++){gets(ch);s[ch]=i;}cin>>m;getchar();for(i=1;i<=m;i++){scanf("%s",ch);u[i]=s[ch];getchar();scanf("%s",ch);v[i]=s[ch];scanf("%lf",&w[i]);getchar();}ans=kruskal(n,m);if(ans>lim)cout<<"Not enough cable\n";elseprintf("Need %.1f miles of cable\n",ans);return 0;}
- 最小生成树Kruskal算法,poj 2075
- poj 2075=最小生成树Kruskal算法
- POJ 2031 最小生成树Kruskal算法
- POJ 1789-Truck History 最小生成树 Kruskal算法
- POJ 1789 Truck History 最小生成树 KRUSKAL算法
- POJ-1251-Jungle Roads-最小生成树-Kruskal算法
- network 最小生成树 Kruskal 算法 poj 1861 zoj 1542
- poj 1251 Kruskal 算法求最小生成树
- poj-2421 Constructing Roads(最小生成树 Kruskal算法)
- poj 2421 Constructing Roads(最小生成树 kruskal算法)
- poj 3522 Slim Span(最小生成树)kruskal算法
- poj 2377 最小生成树(kruskal算法)
- Poj 2395 最小生成树(Kruskal 算法)
- POJ 2421 Constructing Roads 最小生成树 Kruskal算法
- POJ 1789 (最小生成树之Kruskal算法)
- POJ:1751 Highways(最小生成树kruskal算法)
- POJ:2485 Highways(最小生成树kruskal算法)
- POJ 2485 Highways (最小生成树 Kruskal算法)
- poj1251-prim最小生成树(dij改写)
- 电话面试总结(二)
- 欧拉回路,poj 1041
- 拓扑排序,poj 1094
- 无废话之指针研究二 内存分配与管理
- poj 2075=最小生成树Kruskal算法
- 无废话之指针研究 --- 野指针
- HTML属性实例
- [转]C++高进度测试程序运行的时间
- C# 用户自定义UserControl控件使用
- android 源码下载过程和工具速览
- 【成功之路】 让人喜欢的30个原则
- 从内存DC创建bmp文件
- 活动窗口(Active),焦点窗口(Focus),IsDialogMessage,