[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1123

[算法]

首先,如果一个点不是割点,那么,去掉该点后不连通的有序点对就为 : 2 * (n - 1)

否则,去掉这个点后,这个图就被分为了 :

1. 这个点本身

2. 这个点在搜索树上的一些子树

3. 除1,2这两部分的节点

我们可以通过乘法原理算出答案,详见代码

[代码]

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAXN 100010
  4. #define MAXM 500010
  5.  
  6. struct edge
  7. {
  8. int to,nxt;
  9. } e[MAXM << ];
  10.  
  11. int i,n,m,x,y,timer,tot;
  12. int size[MAXN],dfn[MAXN],low[MAXN],head[MAXN];
  13. long long ans[MAXN];
  14. bool visited[MAXN],is_cut[MAXN];
  15.  
  16. inline void addedge(int u,int v)
  17. {
  18. tot++;
  19. e[tot] = (edge){v,head[u]};
  20. head[u] = tot;
  21. }
  22. inline void tarjan(int u)
  23. {
  24. int i,v,cnt,sum;
  25. size[u] = ;
  26. dfn[u] = low[u] = ++timer;
  27. visited[u] = true;
  28. cnt = sum = ;
  29. for (i = head[u]; i; i = e[i].nxt)
  30. {
  31. v = e[i].to;
  32. if (!visited[v])
  33. {
  34. tarjan(v);
  35. size[u] += size[v];
  36. low[u] = min(low[u],low[v]);
  37. if (dfn[u] <= low[v])
  38. {
  39. sum += size[v];
  40. cnt++;
  41. ans[u] += 1ll * size[v] * (n - size[v]);
  42. low[u] = min(low[u],low[v]);
  43. if (u != || cnt > ) is_cut[u] = true;
  44. }
  45. } else low[u] = min(low[u],dfn[v]);
  46. }
  47. if (!is_cut[u]) ans[u] = * (n - );
  48. else ans[u] += 1ll * (n - ) + 1ll * (n - sum - ) * (sum + );
  49. }
  50.  
  51. int main()
  52. {
  53.  
  54. scanf("%d%d",&n,&m);
  55. for (i = ; i <= m; i++)
  56. {
  57. scanf("%d%d",&x,&y);
  58. addedge(x,y);
  59. addedge(y,x);
  60. }
  61. tarjan();
  62. for (i = ; i <= n; i++) printf("%lld\n",ans[i]);
  63.  
  64. return ;
  65.  
  66. }

[POI 2008] BLO的更多相关文章

  1. [POI 2008&洛谷P3467]PLA-Postering 题解(单调栈)

    [POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...

  2. [POI 2008]Mafia

    这题目写了我好长时间,但还是几乎(不要在意细节)一遍 A 了喵~ 据说有代码奇短的,Orz 思路巧妙的大爷 想我这种 Brute Force 写写的傻 X 真是代码量飞起来了耶,喵~ 如果把每个人看成 ...

  3. [POI 2008][BZOJ 1132]Tro

    这题我真是无能为力了 这题的做法还是挺简单的 枚举左下角的点做为原点,把其余点按极角排序    PS.是作为原点,如枚举到 k 时,对于所有 p[i] (包括p[k]) p[i]-=p[k] (此处为 ...

  4. bzoj 1112 poi 2008 砖块

    这滞胀题调了两天了... 好愚蠢的错误啊... 其实这道题思维比较简单,就是利用treap进行维护(有人说线段树好写,表示treap真心很模板) 就是枚举所有长度为k的区间,查出中位数,计算代价即可. ...

  5. 解题:POI 2008 Subdivision of Kingdom

    题面 还可以这么搜......学到了(PoPoQQQ orz) 我们最朴素的做法是枚举所有状态(当然可以剪,剪完最终实际状态量也是$C_{26}^{13}$的),然后每次$O(n)$扫一遍判断,大概会 ...

  6. 解题:POI 2008 Plot purchase

    题面 原来看过然后没做,结果板板把这道题改了改考掉了,血亏=.= 首先看看有没有符合条件的点.如果没有开始寻找解,先把所有的大于$2*k$的点设为坏点,然后求最大子矩形,只要一个最大子矩形的权值和超过 ...

  7. 解题:POI 2008 Station

    题面 水水的换根裸题,不过以前还真没做过换根的题 换根的思想就是在DFS中利用树的信息更新出当前点为根时的信息,具体来说一般是考虑子树外和子树内两部分 每个点的答案$ans$就是$ans[fa]+n- ...

  8. [BZOJ 1124][POI 2008] 枪战 Maf

    1124: [POI2008]枪战Maf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 659  Solved: 259[Submit][Status ...

  9. loj10104 [POI 2008]Blockade

    传送门 分析 我们知道对于一个割点,我们如果去掉它就会使原来的图被分为若干块,则这是我们将所有块包含的点的个数两两相乘即可,而如果不是割点则对于图的连通性没有影响.注意在最后要加上2*(n-1)表示去 ...

随机推荐

  1. 接口测试(一)--soapui实践

    一.接口的概念 接口是指系统模块与模块或系统与系统之间进行交互,一般用的多的是HTTP协议的接口.webService协议的接口,还有RPC的接口. RPC:Remote Procedure Call ...

  2. JS高级——词法作用域

    作用域 1.js中没有块级作用域 2.如果有块级作用域,那么下面代码将会是undefined undefined <script> for (var i = 0; i < 10; i ...

  3. 移动web——touch事件应用

    基本概况 1.touch事件在移动端被用来代替click事件,因为click事件的触发会延迟影响了用户体验 2.touch事件还可以与translate构成吸附效果 3.现行有一种排版方式是左边宽度是 ...

  4. SQL基本操作——通配符

    SQL 通配符:在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用.在 SQL 中,可使用以下通配符: 通配符 描述 % 替代一个或多个字符 ...

  5. Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?

    Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...

  6. centOS7创建python虚拟环境

    参考: 非常棒的2篇博客 https://www.centos.bz/2018/05/centos-7-4-%E5%AE%89%E8%A3%85python3%E5%8F%8A%E8%99%9A%E6 ...

  7. SQL查询性能优化

    使用高效的查询 使用 EXISTS 代替 IN -- 查询A表中同时存在B表的数据 -- 慢 SELECT * FROM Class_A WHERE id IN (SELECT id FROM Cla ...

  8. 关联API

    在类或者函数定义之前加上关联代码 API_XXX

  9. 人工智能时代,你为什么一定要学Python?

    Python岗位年薪至少在10-20w之间,而且除了北.上.广.深外,杭州和合肥等二.三线城市的待遇正在与一线城市持平.未来,无论你身处何地,都能享受到人工智能.Python“带来的“市场红利”. P ...

  10. 控制台输出(System.out.printf)的使用

    一.  介绍 System.out.printf 与 C语言中的 printf 使用方法类似,可以向控制台(Console) 输出指定格式的内容.使用  System.out.printf 的方法比使 ...