割点——tarjan


 #include <bits/stdc++.h>
 using namespace std;

 ;
 ;
 int n, m;
 int ans;//个数 

  * MAXM], nxt[ * MAXM];
 void add(int x, int y) {
     nxt[++cnt] = head[x];
     head[x] = cnt;
     v[cnt] = y;
 }

 int dfn[MAXN], low[MAXN], ind;
 int cut[MAXN];

 void tarjan(int now, int fa) {
     dfn[now] = low[now] = ++ind;
     ;
     for (int i = head[now]; i ; i = nxt[i]) {
         if(!dfn[v[i]]) {
             tarjan(v[i], now);
             low[now] = min(low[now], low[v[i]]);

             ;//不为根节点
             if(now == fa) child++; //为根节点,子树统计
         }
         else {
             low[now] = min(low[now], dfn[v[i]]);
         }
     }
     ) cut[now] = ;//为根节点且有两个及以上的子节点
 }
 int main() {

     scanf("%d%d", &n, &m);
     ; i <= m; i++) {
         int x, y;
         scanf("%d%d", &x, &y);
         add(x, y);
         add(y, x);
     }

     ; i <= n; i++)
         if(!dfn[i])
             tarjan(i, i);

     ; i <= n; i++)
         )
             ans++;
     printf("%d\n", ans);
     ; i <= n; i++)
         )
             printf("%d ", i);

     ;
 }

最新文章

  1. Eclipse 设置SVN忽略文件
  2. Azure ARM (10) ARM模式下的虚拟机和Classic Model虚拟机的区别
  3. spring + myBatis 常见错误:注解事务不回滚
  4. Escape Sequences
  5. js数组内置方法
  6. UILabel 自动换行 和支持换行符
  7. WPF——传实体类
  8. Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法
  9. Windows漏洞利用与防护(2015.8)
  10. Valgrind使用记录
  11. Java环境变量,真的还有必要配吗?
  12. privoxy自动请求转发到多个网络
  13. js模拟ctrl+c的问题
  14. Golang的排序和查找
  15. R的极客理想系列文章--转载
  16. Oracle EBS GL总账凭证取值
  17. mac 无法验证副本
  18. Elasticsearch 知识点
  19. 笔记本的Windows系统怎么设置有了外接鼠标后停用触摸板
  20. test20181024 zi

热门文章

  1. 图像处理笔记(二十一):halcon在图像处理中的运用
  2. 定制的print()输出格式
  3. Python之路(第四十篇)进程池
  4. vscode发博客插件更新v0.1.0(可能会相对好用点吧)
  5. Java中Object类hashCode的底层实现
  6. 数据类型(三) + 流程控制(一) day05
  7. ansible之roles
  8. Python 中的反射方法
  9. 基于Mustache实现sql拼接
  10. 学习笔记16_页面缓存/进程外Session