今天学了割点,就A了这道板子,比较难理解的地方就在于如果是根节点就要找两个点来满足low[y]>=dfn[x],如果不是就只需找一个点来满足。Tarjan(i,i)中第一个i是开始搜索的点而第

二个i代表根节点,就是这棵搜索树的根,虽然一开始值是一样的,但x是要随着搜索向下找的,而根节点在搜索过程中不变。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100010
#define maxm 500010
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
struct node
{
int to,nex;
}edge[*maxm];
int dfn[maxn],low[maxn],st[maxn],inn[maxn],head[maxm],ans[maxn];
int n,m,cnt,res,num;
inline void add(int u,int v)
{
cnt++;
edge[cnt].to=v;
edge[cnt].nex=head[u];
head[u]=cnt;
}
inline void Tarjan(int x,int root)
{
dfn[x]=low[x]=++num;
int flag=;
for(int i=head[x];i!=-;i=edge[i].nex)
{
int y=edge[i].to;
if(!dfn[y])
{
Tarjan(y,root);
low[x]=min(low[x],low[y]);
if(low[y]>=dfn[x]&&x!=root) ans[x]=true;
if(x==root) flag++;
}
else low[x]=min(low[x],dfn[y]);
}
if(x==root&&flag>=) ans[root]=true;
}
int main()
{
memset(head,-,sizeof(head));
n=read();m=read();
for(int i=;i<=m;i++)
{
int u,v;
u=read();v=read();
add(u,v);
add(v,u);
}
for(int i=;i<=n;i++)
if(!dfn[i])
Tarjan(i,i);
for(int i=;i<=n;i++)
if(ans[i])
res++;
write(res);
printf("\n");
for(int i=;i<=n;i++)
if(ans[i])
{
write(i);
printf(" ");
}
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)

最新文章

  1. sql 比模糊查询速度快的查询方法
  2. rdlc报表DEMO
  3. Android 生成xml文件
  4. css基本知识框架(转)
  5. GHOST出错
  6. 在安全层面,企业如何获得更好的投资回报率 ROI?
  7. UGUI 全方位了解
  8. Performing Post-Build Event之类的编译错误
  9. How to write a probeContentType() and Usage?
  10. PHP windowns安装扩展包
  11. JavaScript 重点笔记
  12. IDEA写scala简单操作
  13. 学习WPF
  14. HTML入门随笔
  15. day03---基本数据类型、运算符、与用户交互
  16. JAVA的SPI简单应用
  17. 超详细的PS抠图方法
  18. node.js获取请求参数的方法和文件上传
  19. iOS高德地图使用-搜索,路径规划
  20. 剑指offer二十六之二叉搜索树与双向链表

热门文章

  1. day10——动态参数、函数注释、名称空间、函数的嵌套、global及nonlocal
  2. Python之路【第二十七篇】:web服务器django
  3. golang微服务框架go-micro 入门笔记1.搭建 go-micro环境
  4. 用LabVIEW做声源定位系统
  5. 矩阵优化DP类问题应用向小结
  6. 十二、vue中watch原理
  7. 把项目中的vant UI组件升级
  8. Java JAR包
  9. springboot通过idea打jar包
  10. 【RocketMQ】同一个项目中,同一个topic,可以存在多个消费者么?