题目大意

有一个n个点的完全图,上面有m条边的权值为1,其余为0

求MST

n,m<=10^5

题解

方法一:

维护一个点集,表示当前MST中的点

一开始任意加一个点

对于一个未加入的点,如果和点集中的点的1边数<点集大小,那么必定有0边

所以用堆维护与点集中点有1边的条数的点,每次取出度数最小的

重点:c++的堆的比较函数不太一样

如果一个点的度数=点集大小,答案+1

之后把这个点加进点集(即覆盖其余的点)

方法二:

暴力bfs,用set维护剩余未加入的点

如果用一个点取扩展其余的点,每个点会被0边覆盖一次,每条1边也只会被找到一次

所以时间是O((n+m)log)的

code

方法一

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <queue>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define max(a,b) (a>b?a:b)
using namespace std; struct type{
int s,x;
friend bool operator < (type a,type b) {return a.s>b.s;}
};
priority_queue<type> heap;
int a[200002][2];
int ls[100001];
int b[100001];
int d[100001];
int bz[100001];
int n,m,i,j,k,l,len,ans; void New(int x,int y)
{
++len;
a[len][0]=y;
a[len][1]=ls[x];
ls[x]=len;
} int main()
{
// freopen("b.in","r",stdin); len=1;
scanf("%d%d",&n,&m);ans=n;
fo(i,1,m)
{
scanf("%d%d",&j,&k); New(j,k);
New(k,j);
} fo(i,1,n)
heap.push(type{0,i}); ans=0;
fo(l,0,n-1)
{
if (heap.top().s==l)
++ans; i=heap.top().x;
bz[i]=1;
heap.pop(); for (j=ls[i]; j; j=a[j][1])
if (!bz[a[j][0]])
{
++d[a[j][0]];
heap.push(type{d[a[j][0]],a[j][0]});
} while (!heap.empty() && heap.top().s<d[heap.top().x])
heap.pop();
} printf("%d\n",ans-1);
}

最新文章

  1. Ubuntu 下安装QT
  2. 【转】 iOS9.2-iOS9.3.3越狱插件清单
  3. 【Linux学习】Linux操作技巧
  4. 在easyui的treeGrid中添加checkbox(jquery)
  5. qq邮箱邮我组件
  6. 【C++】array初始化0
  7. fill 函数
  8. javascript的一点误解
  9. EF4 Code First和EF6 Code First链接mysql的方法
  10. Android接口测试-JUnit入门
  11. show engines 解释
  12. prometeus, grafana部署以及监控mysql
  13. javaweb之验证码验证技术
  14. Linux磁盘挂载详述
  15. php接口 接受ios或android端图片; php接收NSData数据
  16. 【第三十九章】 微服务CICD(1)- gitlab搭建与使用(docker版)
  17. Linux:提示符PS1个性设置
  18. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
  19. FastReport.Net使用:[37]报表继承
  20. SharePoint 2013 排错之&amp;quot;Code blocks are not allowed in this file&amp;quot;

热门文章

  1. jupyter 服务器安装随笔
  2. 使用TestNG框架测试用例执行顺序问题
  3. HTML5实现绘制几何图形
  4. eclipse sts 常规操作
  5. P1622释放囚犯
  6. codeforces 597 div 2
  7. http-proxy-middleware
  8. Ubantu创建热点并共享——2019年5月10日更新
  9. linux:shell脚本格式
  10. rem和css3的相关知识点