博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lightoj1063【求割点】
阅读量:4919 次
发布时间:2019-06-11

本文共 1729 字,大约阅读时间需要 5 分钟。

题意不懂啊。。。。。。

只知道求割点。

#include 
using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair
PII;const double eps=1e-5;const double pi=acos(-1.0);const int mod=1e9+7;const int INF=0x3f3f3f3f;const int N=1e4+10;const int M=2e4+10;struct Edge{ int to; int next;};Edge q[M*2];int head[M*2],tol,n,m;int dfn[N],low[N];int ind,top;bool flag[N],vis[N];void Tarjan(int u,int pre){ int v; int son=0; low[u]=dfn[u]=ind++; vis[u]=true; for(int i=head[u];i!=-1;i=q[i].next) { v=q[i].to; if(v==pre) continue; if(!dfn[v]) { son++; Tarjan(v,u); low[u]=min(low[v],low[u]); if(u!=pre&&low[v]>=dfn[u]) flag[u]=true; } else low[u]=min(low[u],dfn[v]); } if(pre==u&&son>1) flag[u]=true;}void init(){ tol=0; memset(head,-1,sizeof(head));}void add(int u,int v){ q[tol].to=v; q[tol].next=head[u]; head[u]=tol++;}int main(){ int T,cas=1;//freopen("D:\\in.txt","r",stdin); scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); init(); while(m--) { int u,v; scanf("%d%d",&u,&v); add(u,v); add(v,u); } memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); memset(flag,0,sizeof(flag)); memset(vis,0,sizeof(vis)); ind=1; int ans=0; Tarjan(1,1); for(int i=1;i<=n;i++) if(flag[i]) { // printf("%d\n",i); ans++; } printf("Case %d: %d\n",cas++,ans); } return 0;}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/6777507.html

你可能感兴趣的文章
关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
查看>>
20131214-EditPlus快捷键-第二十一天
查看>>
安装Windows服务,一直提示系统正在关机的错误。
查看>>
wake,awake,waken,awaken的区别
查看>>
MySQL 字符串拼接
查看>>
iOS-回收键盘的几种方法
查看>>
knockoutJS学习笔记09:使用mapping插件
查看>>
API开发之接口安全(二)-----sign校验
查看>>
bzoj 1047 单调队列
查看>>
Windows Phone开发之路(11) 方向处理之动态布局
查看>>
数据分析笔试题
查看>>
Random在高并发下的缺陷以及JUC对其的优化
查看>>
C# 获取文件路径,读取项目中某程序集下文件
查看>>
static关键字
查看>>
Java面向对象之接口interface 入门实例
查看>>
想成为web开发大神?那你应该从拥有良好的代码规范走起!(JavaScript篇 - 第一篇)...
查看>>
node 删除和复制文件或文件夹
查看>>
便捷开发之mybatis逆向工程
查看>>
前端移动端开发总结(Vue)
查看>>
实现一个EventEmitter类,这个类包含以下方法: on/ once/fire/off
查看>>