给一个n个点的完全图 再给你m条道路已经修好 问你还需要修多长的路才能让所有村子互通

将给的m个点的路重新加权值为零的边到边集里 然后求最小生成树

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #define cl(a,b) memset(a,b,sizeof(a))
  8. #define debug(x) cerr<<#x<<"=="<<(x)<<endl
  9. using namespace std;
  10. typedef long long ll;
  11.  
  12. const int maxn=;
  13.  
  14. int f[maxn],tol,n,m;
  15.  
  16. struct _edge
  17. {
  18. int u,v,w;
  19. }edge[maxn*maxn*maxn];
  20.  
  21. bool cmp(_edge a,_edge b)
  22. {
  23. return a.w<b.w;
  24. }
  25.  
  26. void addedge(int u,int v,int w)
  27. {
  28. edge[tol].u=u;
  29. edge[tol].v=v;
  30. edge[tol].w=w;
  31. tol++;
  32. }
  33.  
  34. int _find(int x)
  35. {
  36. if(f[x]==-) return x;
  37. else return f[x]=_find(f[x]);
  38. }
  39.  
  40. int kruskal()
  41. {
  42. cl(f,-);
  43. sort(edge,edge+tol,cmp);
  44. int cnt=,ans=;
  45. int u,v,w,f1,f2;
  46. for(int i=; i<tol; i++)
  47. {
  48. u=edge[i].u;
  49. v=edge[i].v;
  50. w=edge[i].w;
  51. f1=_find(u);
  52. f2=_find(v);
  53. if(f1!=f2)
  54. {
  55. ans+=w;
  56. f[f1]=f2;
  57. cnt++;
  58. }
  59. if(cnt==n-) break;
  60. }
  61. return ans;
  62. }
  63.  
  64. int main()
  65. {
  66. while(scanf("%d",&n)!=EOF&&n)
  67. {
  68. tol=;
  69. for(int i=;i<n;i++)
  70. {
  71. for(int j=;j<n;j++)
  72. {
  73. int x;
  74. scanf("%d",&x);
  75. addedge(i,j,x);
  76. }
  77. }
  78. scanf("%d",&m);
  79. for(int i=;i<m;i++)
  80. {
  81. int x,y;
  82. scanf("%d%d",&x,&y);
  83. addedge(x-,y-,);
  84. addedge(y-,x-,);
  85. }
  86. printf("%d\n",kruskal());
  87. }
  88. return ;
  89. }
  90. /*
  91.  
  92. 3
  93. 0 990 692
  94. 990 0 179
  95. 692 179 0
  96. 1
  97. 1 2
  98.  
  99. */

[kuangbin带你飞]专题六 最小生成树 POJ 2421 Constructing Roads的更多相关文章

  1. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题六 最小生成树 POJ 1251 Jungle Roads

    题意: 有n个点 每个点上有一些道路 求最小生成树 解释下输入格式 A n v1 w1 v2 w2 A点上有n条边 A到v1权值是w1 A到v2权值是w2 思路: 字符串处理之后跑kruskal求最小 ...

  2. [ An Ac a Day ^_^ ][kuangbin带你飞]专题六 最小生成树 POJ 2031 Building a Space Station

    最小生成树模板题 注意最后输出用%f (从C99开始%f已经不能用于输出double 即 输入用%lf 输出用%f) #include<cstdio> #include<algori ...

  3. [kuangbin带你飞]专题六 最小生成树 POJ 1287 Networking

    最小生成树模板题 跑一次kruskal就可以了 /* *********************************************** Author :Sun Yuefeng Creat ...

  4. [kuangbin带你飞]专题六 最小生成树

    学习最小生成树已经有一段时间了 做一些比较简单的题还算得心应手..花了三天的时间做完了kuangbin的专题 写一个题解出来记录一下(虽然几乎都是模板题) 做完的感想:有很多地方都要注意 n == 1 ...

  5. [kuangbin带你飞]专题六 最小生成树 N - 畅通工程再续

    相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全 ...

  6. [ An Ac a Day ^_^ ][kuangbin带你飞]专题八 生成树 POJ 1679 The Unique MST

    求最小生成树是否唯一 求一遍最小生成树再求一遍次小生成树 看看值是否相等就可以 #include<cstdio> #include<iostream> #include< ...

  7. [kuangbin带你飞]专题1-23题目清单总结

    [kuangbin带你飞]专题1-23 专题一 简单搜索 POJ 1321 棋盘问题POJ 2251 Dungeon MasterPOJ 3278 Catch That CowPOJ 3279 Fli ...

  8. 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开

    [kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...

  9. POJ 2421 Constructing Roads (最小生成树)

    Constructing Roads Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

随机推荐

  1. Java基础之集合:概览

    Java Basic->Collections->Overview 先抛一个问题,用一个类似树形的结构,介绍下 Java 的集合类数据结构:有哪些,从简单到复杂,有怎么样的继承关系. 下面 ...

  2. Asp.Net MVC 上传图片到数据库

    [读书笔记]Asp.Net MVC 上传图片到数据库(会的绕行)   之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存 ...

  3. Redis .NET开源组件Beetle.Redis

    Redis .NET开源组件Beetle.Redis Beetle.Redis是一款开源的Redis Client for .net组件,它提供非常简便的操作方式可以让开发人员轻松地访问Redis,同 ...

  4. JQuery的插件式开发

    如果你只会JQuery的插件式开发, 那么你可以进来看看? 对于JQuery的学习,已经有3年多的时间了,直到去年与我的组长一起做项目,看到他写的JS,确实特别漂亮,有时甚至还看不太懂, 我才发现其实 ...

  5. MongoDB学习之--增删改查(1)

    本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...

  6. Slide-out Sidebar Menu

    IOS学习之路十(仿人人滑动菜单Slide-out Sidebar Menu) 2013-09-03 22:13 by lixingle, 270 阅读, 0 评论, 收藏, 编辑 最近滑动菜单比较流 ...

  7. IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)

    话不多说,先上图 这次增加了阳光的消费和获得,增加了阳光的点击动画 重新排布了布局 有兴趣的话就研究下吧. 上一篇有朋友说让我把项目放到github上面维护,本人没用过这个,肯请朋友们帮小弟科普一下放 ...

  8. (Java 多线程系列)java synchronized详解

    synchronized简介 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block).同步代码块包括两部分:一个作为锁对象的引用,一个作为由这个锁保护的代码块. ...

  9. Sqlite in Android

    在Android上保存本地数据有三种方式,SharedPreferences.Files和Sqlite.SharedPreferences主要是用来保存键值对形式的程序配置信息,与ini.proper ...

  10. Arduino 3G shield using SoftwareSerial to control

    On the 3G shield, by default the power pin is on D8 and reset pin is on D9. Make it HIGH then it wor ...