hdu1301 最小生成树
来源:互联网 发布:新浪php笔试题 编辑:程序博客网 时间:2024/05/29 07:53
题意:输入n个城是,下面n-1行,第一个字母是那个城市的标号,第二个数字是 表示后面有多少条与之相连的边,后面是与之相连的城市的编号加上他的权值。
思路:这个题好多英文,英语不好,用了下百度翻译,对着输入图大概看懂了题意。直接map建图然后克鲁斯卡尔就行
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<vector>#include<string>#include<map>using namespace std;struct edge{int from,to,w;};map<string,int>mm;int n,m;vector<edge>edges;int pre[50];bool cmp(edge a,edge b){ return a.w<b.w;}void addedge(int x,int y,int w){ edge v={x,y,w}; edges.push_back(v);}int find(int x){ if(pre[x]==x) { return x; } else { pre[x]=find(pre[x]); return pre[x]; }}void kluska(){ for(int i=1;i<=n;i++) { pre[i]=i; } int sum=0; int top=n; for(int i=0;i<edges.size();i++) { int f1=find(edges[i].from); int f2=find(edges[i].to); if(f1!=f2) { pre[f2]=f1; sum+=edges[i].w; top--; if(top==1) break; } } printf("%d\n",sum);}int main(){ while(scanf("%d",&n)&&n) { mm.clear(); edges.clear(); char b[81]; char a[81]; int cnt=1; for(int i=1;i<n;i++) { scanf("%s",b); if(!mm[b]) mm[b]=cnt++; int q; scanf("%d",&q); for(int i=1;i<=q;i++) { scanf("%s",a); if(!mm[a]) mm[a]=cnt++; int w; scanf("%d",&w); addedge(mm[b],mm[a],w); } } /* for(int i=0;i<edges.size();i++) { printf("%d %d %d\n",edges[i].from,edges[i].to,edges[i].w); }*/ sort(edges.begin(),edges.end(),cmp); kluska(); }}
阅读全文
0 0
- HDU1301 最小生成树
- HDU1301(最小生成树)
- hdu1301 最小生成树
- HDU1301 普里姆最小生成树
- HDU1301 Jungle Roads 【最小生成树Prim】
- hdu1301 Jungle Roads 【最小生成树】
- hdu1301 Jungle Roads (最小生成树)
- HDU1301 最小生成树kruskal裸题
- [HDU1301]-Jungle Roads(最小生成树)
- HDU1301 Jungle Roads(最小生成树prim)
- hdu1301 Jungle Roads(Prime算法求最小生成树)
- HDU1301 POJ1251 Jungle Roads【Prim】【最小生成树】
- hdu1301——Jungle Roads——最小生成树
- hdu1301 prim和kruskal求最小生成树
- HDU1301 并查集和最小生成树
- hdu1301 Jungle Roads(两种基本最小生成树)
- hdu1301&poj1251 Jungle Roads(最小生成树之prim果题)
- HDU1301 最小生成树 + Prim +(Prim求最小生成树与Dijkstra求最短路的区别) (如此题不要误解题意为用Dijkstra!)
- 已知空间中某个3d物体的欧拉角(p,h,b),求该物体绕固定轴(v)旋转固定角度(theta)后该物体的欧拉角p',h',b'
- 网络通信问题定位步骤
- 工作流学习——Activiti流程变量五步曲
- 奋斗方向
- 数组,集合的写法
- hdu1301 最小生成树
- OpenCV显示中文汉字,未使用CvxText和FreeType库,很强大!!
- C#变量(枚举,结构,数组)
- 使用layer
- Android 双时间选择控件
- Android手势识别
- (2)选择器:class选择器、id选择器、关联选择器、组合选择器、伪元素选择器
- vs远程调试
- AssertJ 单元测试工具介绍