1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. using namespace std;
  5. typedef long long ll;
  6. int n, m, uu, vv, hea[100005], cnt, siz[100005], dfn[100005], loo[100005], idx;
  7. ll ans[100005];
  8. bool ins[100005];
  9. struct Edge{
  10. int too, nxt;
  11. }edge[1000005];
  12. void add_edge(int fro, int too){
  13. edge[++cnt].nxt = hea[fro];
  14. edge[cnt].too = too;
  15. hea[fro] = cnt;
  16. }
  17. void dfs(int x, int f){
  18. dfn[x] = loo[x] = ++idx;
  19. siz[x] = 1;
  20. ins[x] = true;
  21. int fla=0, sum=0;
  22. bool isc=false;
  23. for(int i=hea[x]; i; i=edge[i].nxt){
  24. int t=edge[i].too;
  25. if(!dfn[t]){
  26. dfs(t, x);
  27. siz[x] += siz[t];
  28. loo[x] = min(loo[x], loo[t]);
  29. if(loo[t]>=dfn[x]){
  30. fla++;
  31. sum += siz[t];
  32. ans[x] += (ll)siz[t] * (n - siz[t]);
  33. if(x!=1 || fla>1) isc = true;
  34. }
  35. }
  36. else if(ins[t]) loo[x] = min(loo[x], dfn[t]);
  37. }
  38. // if(x==1) cout<<"1's isc: "<<isc<<endl;
  39. if(isc) ans[x] += (ll)(n-sum-1)*(sum+1) + (n-1);
  40. else ans[x] = 2 * (n - 1);
  41. ins[x] = false;
  42. }
  43. int main(){
  44. cin>>n>>m;
  45. for(int i=1; i<=m; i++){
  46. scanf("%d %d", &uu, &vv);
  47. add_edge(uu, vv);
  48. add_edge(vv, uu);
  49. }
  50. for(int i=1; i<=n; i++)
  51. if(!dfn[i])
  52. dfs(i, 0);
  53. for(int i=1; i<=n; i++)
  54. printf("%lld\n", ans[i]);
  55. return 0;
  56. }

luogu3469 [POI2008]BLO-Blockade的更多相关文章

  1. BZOJ 1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1030  Solved: 440[Submit][Status] ...

  2. BZOJ1123: [POI2008]BLO

    1123: [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 614  Solved: 235[Submit][Status] ...

  3. BZOJ 1123: [POI2008]BLO( tarjan )

    tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下 ------------------------------------------------- ...

  4. bzoj 1123 [POI2008]BLO Tarjan求割点

    [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1540  Solved: 711[Submit][Status][Discu ...

  5. [POI2008]BLO(Tarjan)

    [POI2008]BLO Description Byteotia城市有\(n\)个 towns \(m\)条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所 ...

  6. 【dfs+连通分量】Bzoj1123 POI2008 BLO

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  7. 割点判断+luogu 3469 POI2008 BLO

    1.根节点,有2棵及以上子树 2.非根节点,有子节点dfn[u]<=low[v] #include <bits/stdc++.h> #define N 1000050 using n ...

  8. [POI2008] BLO

    link 试题分析 分两种情况考虑. 当此点不是割点是,答案是$2\times (n-1)$. 当是割点时,我们发现这个点把树分成了若干个联通块,只要两两相乘即可. #include<iostr ...

  9. BZOJ 1123 [POI2008]BLO(Tarjan算法)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1123 [题目大意] Byteotia城市有n个towns,m条双向roads. 每条r ...

  10. BZOJ1123:[POI2008]BLO(双连通分量)

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

随机推荐

  1. go实现主线程等待子线程都运行完再退出

    方式一 package main import ( "fmt" ) func main() { ch := make(chan struct{}) count := 2 // co ...

  2. Java中super关键字的作用与用法

    Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有 ...

  3. JFinal教程:JFinal极速开发企业实战百集JFinal视频教程发布

    课程名称:JFinal极速开发企业实战 课程长度:100课时 课程作者:小木(909854136) 课程地址:http://edu.csdn.net/course/detail/1968 官网网址:h ...

  4. Struts功能详解 ——ActionServlet

    ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax.servlet.http.HttpServlet类.Struts的启动通常从 加载ActionServlet开始 ...

  5. LINQ 组合查询 和分页查询的使用

    前端代码 <%@ Page Language="C#" AutoEventWireup="true" Debug="true" Cod ...

  6. HDU 3592 World Exhibition (差分约束,spfa,水)

    题意: 有n个人在排队,按照前后顺序编号为1~n,现在对其中某两人的距离进行约束,有上限和下限,表示dis[a,b]<=c或者dis[a,b]>=c,问第1个人与第n个人的距离最多可能为多 ...

  7. 在SAP C4C里触发SAP ERP的ATP check和Credit check

    在C4C里创建一个新的Sales Quote: 添加三个行项目: 执行action "Request External Pricing"会从ERP更新pricing信息,触发ATP ...

  8. python零基础学习开篇

    我是某工业大学的一名博士,研究方向是基于人脸的模式识别.很遗憾,毕业后没有继续从事图像处理中模式识别相关研究.多种原因进入了一家国企单位,从事交通方面工作.工作2年中一直迷茫,没有在工作岗位中找到自己 ...

  9. 关于Java虚拟机JVM的简单了解

    JVM主要功能 Java是一种高级编程语言. 用高级语言编写的程序不能直接在任何机器上运行. 首先,需要将其翻译成特定的机器语言,javac编译器就专门来干这个事儿的,它把Java程序(含有的.jav ...

  10. Linux学习日记:第二天

    今天学习vi编辑命令: root@ubuntu:vi hello.java 使用到的命令: 插入命令: a 和 i:在当前光标前或后插入文本(A 和 I 分别在当前行行末或行首插入文本):  o 和  ...