对于关系,看其是否是“等价关系”,即满足:自反,传递,对称。

如果是可以用并查集来连接等价类。

这道题是求原图补集的联通快个数,考虑原图度最少的点(由鸽巢原理,最多为2*e/n个)。

先将未与其连边的点并在一个集合中,然后再用剩下的点暴力,每次O(n),最多暴力O(2*e/n)次,所以总的复杂度是O(e)的。

 /**************************************************************
Problem: 1098
User: idy002
Language: C++
Result: Accepted
Time:8932 ms
Memory:31140 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#define maxn 100010
using namespace std; int n, m;
int dgr[maxn];
vector<int> g[maxn], stk;
int fa[maxn], sz[maxn];
bool mark[maxn]; void init() {
for( int i=; i<=n; i++ ) fa[i]=i;
}
int find( int a ) {
return a==fa[a] ? a : fa[a]=find(fa[a]);
}
void unon( int a, int b ) {
fa[find(a)] = find(b);
} int main() {
scanf( "%d%d", &n, &m );
for( int i=,u,v; i<=m; i++ ) {
scanf( "%d%d", &u, &v );
g[u].push_back( v );
g[v].push_back( u );
dgr[u]++, dgr[v]++;
}
int mu=;
init();
for( int u=; u<=n; u++ ) if( dgr[u]<dgr[mu] ) mu=u; for( int t=; t<g[mu].size(); t++ ) mark[g[mu][t]]=true;
for( int u=; u<=n; u++ ) if( !mark[u] ) unon(u,mu);
for( int t=; t<g[mu].size(); t++ ) mark[g[mu][t]]=false; for( int t=; t<g[mu].size(); t++ ) stk.push_back( g[mu][t] );
for( int i=; i<stk.size(); i++ ) {
int u=stk[i]; for( int t=; t<g[u].size(); t++ ) mark[g[u][t]] = true;
for( int v=; v<=n; v++ ) if( !mark[v] ) unon(u,v);
for( int t=; t<g[u].size(); t++ ) mark[g[u][t]] = false;
}
for( int u=; u<=n; u++ )
sz[find(u)]++;
vector<int> ans;
for( int u=; u<=n; u++ )
if( fa[u]==u ) ans.push_back(sz[u]);
sort( ans.begin(), ans.end() );
printf( "%d\n", ans.size() );
for( int t=; t<ans.size(); t++ )
printf( "%d ", ans[t] );
printf( "\n" );
}

bzoj 1098的更多相关文章

  1. [BZOJ 1098] [POI2007] 办公楼biu 【链表优化BFS】

    题目链接:BZOJ - 1098 题目分析 只有两个点之间有边的时候它们才能在不同的楼内,那么就是说如果两个点之间没有边它们就一定在同一座楼内. 那么要求的就是求原图的补图的连通块. 然而原图的补图的 ...

  2. BZOJ 1098 [POI2007]办公楼biu(反向图bfs+并查集优化)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1098 [题目大意] 现在有一张图,要求将这张图的点划分为尽量多的分组,对于不同分组的两 ...

  3. bzoj 1098 [POI2007]办公楼biu——链表

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1098 求补图的连通块大小.与自己没有边的和自己在一个连通块里. 用链表把所有点串起来.先给自 ...

  4. bzoj 1098 办公楼biu —— 链表+栈

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1098 首先,没有连边的人一定得在一个连通块里: 先把所有人连成一个链表,然后从第一个人开始, ...

  5. bzoj 1098 poi2007 办公楼 bfs+链表

    题意很好理解,求给出图反图的联通块个数. 考虑这样一个事情:一个联通块里的点,最多只会被遍历一次,再遍历时没有任何意义 所以用链表来存,每遍历到一个点就将该点删掉 #include<cstdio ...

  6. 【刷题】BZOJ 1098 [POI2007]办公楼biu

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的 电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD ...

  7. 【BZOJ 1098】办公楼(补图连通块个数,Bfs)

    补图连通块个数这大概是一个套路吧,我之前没有见到过,想了好久都没有想出来QaQ 事实上这个做法本身就是一个朴素算法,但进行巧妙的实现,就可以分析出它的上界不会超过 $O(n + m)$. 接下来介绍一 ...

  8. bzoj 1098 [POI2007]办公楼biu bfs+补图+双向链表

    [POI2007]办公楼biu Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1543  Solved: 743[Submit][Status][Di ...

  9. BZOJ 1098: [POI2007]办公楼biu 链表

    求补图连通块,用链表优化,势能O(n+m) #include<cstdio> #include<cstring> #include<iostream> #inclu ...

随机推荐

  1. python3之json模块使用

    1. json模块介绍 json是python自带的操作json的模块. python序列化为json时的数据类型转换关系: python格式 json格式 dict(复合类型) object lis ...

  2. 组合数+逆元 A - Chat Group Gym - 101775A

    题目链接:https://cn.vjudge.net/contest/274151#problem/A 具体思路:我们可以先把所有的情况算出来,为2^n.然后不合法的情况减去就可以了.注意除法的时候要 ...

  3. hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498 50 years, 50 colors Time Limit: 2000/1000 MS (Ja ...

  4. 无key值的json数组解析

    [    [        {            "cartId": 9223,            "factoryId": 143,          ...

  5. 选择问题(选择数组中第K小的数)

    由排序问题可以引申出选择问题,选择问题就是选择并返回数组中第k小的数,如果把数组全部排好序,在返回第k小的数,也能正确返回,但是这无疑做了很多无用功,由上篇博客中提到的快速排序,稍稍修改下就可以以较小 ...

  6. makefile使用.lds链接脚本以及 $@ ,$^, $,< 解析【转】

    转自:http://www.cnblogs.com/lifexy/p/7089873.html 先来分析一个简单的.lds链接脚本 例1,假如现在有head.c init.c nand.c main. ...

  7. S3C6410 SPI全双工读写流程分析(原创)【转】

    转自:http://blog.csdn.net/hustyangju/article/details/21165721 原创博文,知识共享!转载请注明出处:http://blog.csdn.net/h ...

  8. RTC

    RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片. RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲主板上的晶振及相关电路组成的时钟电路的生成脉冲,,RTC经过825 ...

  9. django rest_framework中将json输出字符强制为utf-8编码

    最近在和日本外包合作开发JIRA对接发布系统的版本单时, 遇到这个问题. 就是我们这边的输出浏览器显示为中文,而到了JIRA端就出现乱码. 查了文档,原来django rest_framework的默 ...

  10. 使用亚马逊云服务器EC2做深度学习(二)配置Jupyter Notebook服务器

    这是<使用亚马逊云服务器EC2做深度学习>系列的第二篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...