Jungle Roads

HDOJ-1301

这是最小生成树的水题,唯一要注意的就是那个n,其实输入只有n-1行。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<algorithm>
  6. #include<queue>
  7. #include<map>
  8. using namespace std;
  9. const int INF=0X3F3F3F3F;
  10. const int maxn=30;
  11. const int maxm=80;
  12. int n;
  13. int rodes[maxn][maxn];
  14. map<char,int> ma;
  15. int mincost[maxn];
  16. bool vis[maxn];
  17. int prim(int s){
  18. memset(mincost,INF,sizeof(mincost));
  19. mincost[s]=0;
  20. memset(vis,0,sizeof(vis));
  21. int ans=0;
  22. for(int i=0;i<n;i++){
  23. int v=-1;
  24. int mins=INF;
  25. for(int j=0;j<n;j++){
  26. if(!vis[j]&&mincost[j]<mins){
  27. mins=mincost[j];
  28. v=j;
  29. }
  30. }
  31. if(v==-1)
  32. break;
  33. ans+=mins;
  34. vis[v]=1;
  35. for(int j=0;j<n;j++){
  36. mincost[j]=min(mincost[j],rodes[v][j]);
  37. }
  38. }
  39. return ans;
  40. }
  41. int main(){
  42. ios::sync_with_stdio(false);
  43. cin.tie(0);
  44. for(int i=0;i<26;i++){
  45. ma[i+'A']=i;
  46. }
  47. while(cin>>n&&n){
  48. memset(rodes,INF,sizeof(rodes));
  49. for(int i=0;i<n-1;i++){
  50. char c;int k;
  51. cin>>c>>k;
  52. int from=ma[c];
  53. for(int j=0;j<k;j++){
  54. char c1;int cost;
  55. cin>>c1>>cost;
  56. //cout<<c<<" "<<c1<<cost<<endl;
  57. int to=ma[c1];
  58. rodes[from][to]=rodes[to][from]=min(rodes[from][to],cost);
  59. }
  60. }
  61. cout<<prim(1)<<endl;
  62. }
  63. return 0;
  64. }

HDOJ-1301(最小生成树模板+Prim算法)的更多相关文章

  1. HDOJ 1301最小生成树的Kruskal算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 将结点的字符信息处理成点信息即可,代码如下: #include<bits/stdc++.h ...

  2. Hihocoder 之 #1097 : 最小生成树一·Prim算法 (用vector二维 模拟邻接表,进行prim()生成树算法, *【模板】)

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

  3. C++编程练习(10)----“图的最小生成树“(Prim算法、Kruskal算法)

    1.Prim 算法 以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 2.Kruskal 算法 直接寻找最小权值的边来构建最小生成树. 比较: Kruskal 算法主要是针对边来展开,边数 ...

  4. 最小生成树一·Prim算法

    描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问题也接踵而来——小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道 ...

  5. 数据结构与算法--最小生成树之Prim算法

    数据结构与算法--最小生成树之Prim算法 加权图是一种为每条边关联一个权值或称为成本的图模型.所谓生成树,是某图的一棵含有全部n个顶点的无环连通子图,它有n - 1条边.最小生成树(MST)是加权图 ...

  6. 24最小生成树之Prim算法

    最小生成树的Prim算法 思想:采用子树延伸法 将顶点分成两类: 生长点——已经在生成树上的顶点 非生长点——未长到生成树上的顶点 使用待选边表: 每个非生长点在待选边表中有一条待选边,一端连着非生长 ...

  7. 最小生成树的Prim算法

       构造最小生成树的Prim算法    假设G=(V,E)为一连通网,其中V为网中所有顶点的集合,E为网中所有带权边的集合.设置两个新的集合U和T,其中集合U用于存放G的最小生成树的顶点,集合T用于 ...

  8. hihocoder 1097 最小生成树一·Prim算法

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

  9. 算法学习记录-图——最小生成树之prim算法

    一个连通图的生成树是一个极小的连通子图,它包含图中全部的顶点(n个顶点),但只有n-1条边. 最小生成树:构造连通网的最小代价(最小权值)生成树. prim算法在严蔚敏树上有解释,但是都是数学语言,很 ...

随机推荐

  1. net core 踩坑记录

    静态文件要放到wwwroot目录中才能访问 linux服务器部署运行报错 System.Net.Http.HttpRequestException: The SSL connection could ...

  2. 【转】Kubernetes scheduler学习笔记

    简介 Kubernetes是一个强大的编排工具,可以用来很方便的管理许多台机器,为了使机器的资源利用率提高,同时也尽可能的把压力分摊到各个机器上,这个职责就是由scheduler来完成的. Kuber ...

  3. 1.初识Redis

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  4. HDU 3247 Resource Archiver(AC自动机 + 状压DP + bfs预处理)题解

    题意:目标串n( <= 10)个,病毒串m( < 1000)个,问包含所有目标串无病毒串的最小长度 思路:貌似是个简单的状压DP + AC自动机,但是发现dp[1 << n][ ...

  5. 渗透技巧——如何逃逸Linux的受限制shell执行任意命令

    导语:本文介绍了如何在受限制的shell中执行任意命令,实现交互.其相应的利用场景是说当我们通过一些手段拿到当前Linux机器的shell时,由于当前shell的限制,很多命令不能执行,导致后续的渗透 ...

  6. vue 的 computed 属性在什么时间执行

    vue 的 computed 属性在什么时间执行

  7. 使用 js 实现十大排序算法: 基数排序

    使用 js 实现十大排序算法: 基数排序 基数排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  8. PM2 & nodemon

    PM2 & nodemon node.js server tools PM2 https://pm2.keymetrics.io/ https://pm2.io/ $ yarn global ...

  9. C++ 0LL

    C++ 0LL C plus plus L / l means long LL === long long int countDigitOne(int n) { int countr = 0; for ...

  10. js & input event & input change event

    js & input event & input change event vue & search & input change <input @click=& ...