HDU 1301Jungle Roads Kruskal求解
来源:互联网 发布:硕士论文淘宝代写 编辑:程序博客网 时间:2024/04/30 16:56
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66965#problem/M
题意:热带的一个国家还是啥的,需要维护network,求最小维护费用问题,几乎就是最小生成树意思。
思路:Kruskal求解,没啥亮点,可以用map方便的把字符整型化。也可以用字符减去'A'。
代码:
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<map>using namespace std;struct edge{ int u,v,w; bool operator< (const edge &a)const{ return w<a.w; }}E[900];map<char,int> mp;//把字符整型化int N,tot;int pre[30];int find(int x){ int t=x; while(t!=pre[t]) t=pre[t]; while(x!=t) pre[x]=t,x=pre[x]; return t;}void Kruskal(){ for(int i=0;i<=26;i++) pre[i]=i; int sum=0,cnt=1; for(int i=0;i<tot;i++){ int u=E[i].u,v=E[i].v,w=E[i].w; int fu=find(u),fv=find(v); if(fu==fv) continue; pre[fu]=fv;sum+=w;cnt++; if(cnt==N) break; } cout<<sum<<endl;}int main(){ //freopen("D:\\in.txt","r",stdin); for(int i=0;i<26;i++) mp['A'+i]=i; while(cin>>N && N){ char ch; int k,t; tot=0; for(int i=0;i<N-1;i++){ cin>>ch>>k; for(int j=0;j<k;j++){ cin>>ch>>t; E[tot++]=(edge){i,mp[ch],t}; } } sort(E,E+tot); Kruskal(); } return 0;}
0 0
- HDU 1301Jungle Roads Kruskal求解
- HDU 1301--Jungle Roads 【Kruskal】
- HDU 1301 Jungle Roads(Kruskal算法)
- hdu 1301 Jungle Roads(最小生成树Kruskal)
- hdu 1301 Jungle Roads &&poj 1251 (prim 或者kruskal)
- HDU 1301 Jungle Roads (最小生成树)kruskal
- PKU #1251/HDU #1301 Jungle Roads(Kruskal+并查集)
- HDU 1301 Jungle Roads (Kruskal求最小生成树)
- hdu 1301 Jungle Roads(最小生成树kruskal)
- HDU 1301 Jungle Roads(最小生成树Kruskal)
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- Hdu 1301 - Jungle Roads
- HDU 1301 Jungle Roads
- HDU 1301 Jungle Roads
- 2015年大一下第6周项目2-Time类中的运算符重载
- Dijkstra 单源最短路径
- Lunch Time
- ViewSub
- Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
- HDU 1301Jungle Roads Kruskal求解
- CentOS常用到的查看系统命令
- Android Action Bar 详解篇
- window 下安装 mongodb
- 霍夫变换详解
- java中的可见性修饰符
- May Day Holiday
- C++文件操作(一)
- 如何查看已安装的CentOS版本信息