| #include<iostream> |
| #include<cstdio> |
| #include<cmath> |
| #include<algorithm> |
| #include<cstring> |
| |
| using namespace std; |
| |
| int cnt = 1,l[100005],h[100005],nex[100005]; |
| int num,p,stack[100005],low[100005],dfn[100005]; |
| bool op[100005],op_sig[100005]; |
| int f,r,a,b,ans; |
| |
| inline void add( int v1 , int v2 ) { |
| ++ cnt; |
| l[cnt] = h[v1]; |
| h[v1] = cnt; |
| nex[cnt] = v2; |
| |
| ++ cnt; |
| l[cnt] = h[v2]; |
| h[v2] = cnt; |
| nex[cnt] = v1; |
| } |
| |
| void tarjan( int now ) { |
| dfn[now] = low[now] = ++ num; |
| stack[++ p] = now; |
| op[now] = true; |
| for (int i = h[now]; i != 0; i = l[i]) { |
| if( op_sig[i] == false) { |
| if ( dfn[nex[i]] == 0 ) { |
| op_sig[i] = true; |
| op_sig[i^1] = true; |
| |
| tarjan( nex[i] ); |
| low[now] = min( low[now] , low[nex[i]] ); |
| if ( low[nex[i]] > dfn[now] ) { |
| |
| ans++; |
| } |
| } |
| else { |
| if ( op[nex[i]] ) { |
| low[now] = min( low[now] , dfn[nex[i]] ); |
| } |
| } |
| } |
| } |
| if ( dfn[now] == low[now] ) { |
| int temp; |
| do { |
| temp = stack[p]; |
| op[temp] = false; |
| p --; |
| } while ( now !=temp ); |
| } |
| return; |
| } |
| |
| int main() { |
| scanf("%d%d",&f,&r); |
| for (int i = 1; i <= r; ++i){ |
| scanf("%d%d",&a,&b); |
| add( a , b ); |
| } |
| tarjan( 1 ); |
| printf("%d\n",ans); |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具