题意很好理解,求给出图反图的联通块个数。

考虑这样一个事情:一个联通块里的点,最多只会被遍历一次,再遍历时没有任何意义

所以用链表来存,每遍历到一个点就将该点删掉

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. #define N 100005
  8. int e=1,head[N],n,m;
  9. int nxt[N],ans,pre[N],final[N],tot,q[N];
  10. bool bo[N],flag[N];
  11. struct edge{
  12. int u,v,next;
  13. }ed[4000005];
  14. void add(int u,int v)
  15. {
  16. ed[e].v=v;
  17. ed[e].next=head[u];
  18. head[u]=e++;
  19. }
  20. void del(int x){
  21. nxt[pre[x]]=nxt[x];
  22. pre[nxt[x]]=pre[x];
  23. }
  24. void bfs(int x)
  25. {
  26. int h=1,t=1;
  27. q[1]=x;
  28. while(h<=t){
  29. int now=q[h++]; ans++;
  30. for(int i=nxt[0];i<=n;i=nxt[i]) bo[i]=0;
  31. for(int i=head[now];i;i=ed[i].next)
  32. bo[ed[i].v]=1;
  33. for(int i=nxt[0];i<=n;i=nxt[i]){
  34. if(!bo[i]){
  35. del(i); q[++t]=i;
  36. }
  37. }
  38. }
  39. }
  40. int main()
  41. {
  42. int u,v;
  43. scanf("%d%d",&n,&m);
  44. for(int i=1;i<=m;i++){
  45. scanf("%d%d",&u,&v);
  46. add(u,v); add(v,u);
  47. }
  48. nxt[0]=1;
  49. for(int i=1;i<=n+1;i++){
  50. pre[i]=i-1;
  51. nxt[i]=i+1;
  52. }
  53. tot=0;
  54. for(int i=nxt[0];i<=n;i=nxt[0]){
  55. ans=0;
  56. del(i); bfs(i);
  57. final[++tot]=ans;
  58. }
  59. sort(final+1,final+tot+1);
  60. printf("%d\n",tot);
  61. for(int i=1;i<=tot;i++)
  62. printf("%d ",final[i]);
  63. return 0;
  64. }

bzoj 1098 poi2007 办公楼 bfs+链表的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. bzoj 1098 [POI2007] 办公楼 biu

    # 解题思路 画画图可以发现,只要是两个点之间没有相互连边,那么就必须将这两个人安排到同一个办公楼内,如图所示: 那,我们可以建立补图,就是先建一张完全图,然后把题目中给出的边都删掉,这就是一张补图, ...

  8. BZOJ_1098_[POI2007]办公楼biu_链表优化BFS

    BZOJ_1098_[POI2007]办公楼biu_链表优化BFS Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的 电话号 ...

  9. 【BZOJ】1098: [POI2007]办公楼biu(补图+bfs+链表)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1098 显然答案是补图连通块..... 想到用并查集...可是连补图的边都已经...n^2了...怎么 ...

随机推荐

  1. OpenLayers3中wfs的属性查询

    var vector = new ol.layer.Vector({ source: new ol.source.Vector({ format: new ol.format.GeoJSON(), u ...

  2. java常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

    1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...

  3. c#实例化继承类,必须对被继承类的程序集做引用

    0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Culture=neutral, PublicKeyTo ...

  4. jQuery插件之-----弹性运动

    <!doctype html><html><head><meta charset="utf-8"><title>弹性运动 ...

  5. plsql使用

    本文由jay8605162432贡献 本课重点: 1.写 SELECT 语句进行数据库查询 2.进行数学运算 3.处理空值 4.使用别名 ALIASES 5.连接列 6.在 SQL PLUS 中编辑缓 ...

  6. 如何卸载Centos自带jdk

    1.搜索安装的jdk: rpm -qa|grep jdk 结果如下: java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 java-1.6.0-openjdk ...

  7. Ajax的简单使用

    仅介绍Ajax的使用,让入门小白快速上手 //请自行引入jQuery库文件 <script type="text/javascript"> $(function() { ...

  8. iframe中 父页面和子页面查找元素的方法

    从父页面中查找iframe子页面中对象的方法:JS: document.getElementById('iframe').contentWindow //查找iframe加载的页面的window对象 ...

  9. Python教程大纲

    缘起:最近想在部门推Python语言,写这个blog主要就是个教程大纲,之前先列出一些资源:Python历史:http://www.docin.com/p-53019548.html          ...

  10. DDGScreenShot—图片擦除功能

    写在前面 图片擦除功能,也是运用图片的绘制功能, 将图片绘制后,拿到相应的图片.当然,有一涨底图更明显 实现代码如下 /** ** 用手势擦除图片 - imageView --传图片 - bgView ...