CF

luogu

先讲两个靠谱的做法

1.首先因为有n个点,m条不存在的边,所以至少存在一个点,和m/n个点之间没边,所以把这个点找出来,连一下其他相连的点,这样还剩m/n个点没确定在哪个联通块,而这些点最多和n-1个点有边,所以从这些点暴力合并即可

2.开一个队列/set/链表维护没有确定在哪个联通块的边,每次先取出一个点,然后往点集里尽量连边,再把连出的点放到队列里继续连边合并,这样每次都能搜出一个联通块

下面是假算法

每次找一个没标记的点,打标记,爆枚所有存在的边,和对应点连上,在把刚刚扫到的点打标记

然额是错的,详见我的提交记录

但是懒得改了

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register using namespace std;
const int N=2e5+10;
il LL rd()
{
LL x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int to[N<<1],nt[N<<1],hd[N],dg[N],tot=1;
il void add(int x,int y)
{
++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot,--dg[x];
++tot,to[tot]=x,nt[tot]=hd[y],hd[y]=tot,--dg[y];
}
bool v[N],vv[N];
int n,m,ff[N],sz[N],s[N],a[N],ta;
il int findf(int x){return ff[x]==x?x:ff[x]=findf(ff[x]);}
il bool cmp(int a,int b){return dg[a]>dg[b];} int main()
{
n=rd(),m=rd();
for(int i=1;i<=n;++i) ff[i]=i,sz[i]=1,dg[i]=n-1,s[i]=i;
for(int i=1;i<=m;++i) add(rd(),rd());
sort(s+1,s+n+1,cmp);
for(int i=1;i<=n;++i)
if(!v[s[i]]||n<=5000) //把数据小的部分暴力处理就能过了qwq
{
v[s[i]]=vv[s[i]]=1;
for(int j=hd[s[i]];j;j=nt[j]) vv[to[j]]=1;
for(int j=1;j<=n;++j)
if(!vv[j])
{
v[j]=1;
int x=findf(s[i]),y=findf(j);
if(x^y) ff[y]=x,sz[x]+=sz[y];
}
vv[s[i]]=0;
for(int j=hd[s[i]];j;j=nt[j]) vv[to[j]]=0;
}
for(int i=1;i<=n;++i)
if(findf(i)==i) a[++ta]=sz[i];
sort(a+1,a+ta+1);
printf("%d\n",ta);
for(int i=1;i<=ta;++i) printf("%d ",a[i]);
return 0;
}

最新文章

  1. Everything(文件搜索神器)
  2. 使用C#给Linux写Shell脚本(下篇)
  3. Python框架、库以及软件资源汇总
  4. SQLSERVER拯救某个时间点被误删除的数据
  5. javascript --- 再谈词法分析
  6. float类型进行计算精度丢失的问题
  7. android support Percent支持库开发
  8. git的学习网站
  9. Java中Scanner类
  10. apache安装php7过程中遇到到段错误
  11. Java基础知识强化之集合框架笔记40:Set集合之HashSet存储自定义对象并遍历
  12. PHP之操作数据库
  13. Windows socket之最简单的socket程序
  14. SpringAOP导致@Autowired依赖注入失败
  15. Firefox实用插件记录
  16. 踩坑之路_&quot;var name = &#39; &#39;;&quot;_迷之BUG
  17. 解决Visual Studio For Mac Restore失败的问题
  18. 转 My97日历控件常用功能记录
  19. POI 导出
  20. cb &amp;&amp; cb() 和 a || {}

热门文章

  1. ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)
  2. A1114. Family Property
  3. 安全测试之Top 10 漏洞的分析
  4. 第二十四节,TensorFlow下slim库函数的使用以及使用VGG网络进行预训练、迁移学习(附代码)
  5. 构造代码块、this关键字、静态变量、静态代码块、主函数
  6. AndroidS软件代码提示
  7. 修复./mysql/proc
  8. ruby读取exce文件,使用roo---Gem
  9. 腾讯云部署javaWeb项目之一应用服务器
  10. 当php邂逅windows通用上传缺陷