Luogu T29912 fuck
这是QZEZ的Luogu团队中的一道难得的水题,题面和数据都是CJJ dalao出的,然后我就没有太看懂题意。
也是一道经典的割点好题,但需要一定的思维。
首先对于题意,它只需要得到切断的作用就可以了(将\(1\)的联通快分成几部分即可)
然后我们就可以对周围的点都进行建边,然后跑一下看看有没有割点。
有的话很明显,随便找一个割点一道切掉即可。但如果没有呢?
据CJJ dalao和我的一阵讨论发现这时候就只需要割掉两个点即可。
例如类似这样的一个图:
1 1 1
1 0 1
1 1 1
我们在割去一边上的任意一个点时就会出现割点。不知道是什么性质。
然后莫名就过了。
CODE
#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std;
const int N=305,fx[4]={0,1,0,-1},fy[4]={1,0,-1,0};
struct edge
{
int to,next;
}e[N*N<<3];
int head[N*N],father[N*N],low[N*N],dfn[N*N],cnt,tot,ans,t,n,m,g[N][N];
bool cut[N*N];
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch; while (!isdigit(ch=tc()));
while (x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));
}
inline void add(int x,int y)
{
e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
}
inline int min(int a,int b)
{
return a<b?a:b;
}
inline void clear(void)
{
memset(e,-1,sizeof(e)); memset(head,-1,sizeof(head));
memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn));
memset(father,0,sizeof(father)); memset(cut,0,sizeof(cut)); cnt=ans=0;
}
inline void build(int x,int y)
{
for (register int i=0;i<4;++i)
{
int xx=x+fx[i],yy=y+fy[i];
if (xx>0&&yy>0&&xx<=n&&yy<=m&&g[xx][yy]) add((x-1)*m+y,(xx-1)*m+yy);
}
}
inline void Tarjan(int now)
{
dfn[now]=low[now]=++tot; int res=0;
for (register int i=head[now];i!=-1;i=e[i].next)
if (!dfn[e[i].to])
{
father[e[i].to]=now; ++res;
Tarjan(e[i].to); low[now]=min(low[now],low[e[i].to]);
if (father[now]&&low[e[i].to]>=dfn[now]) !cut[now]&&(cut[now]=1,++ans);
} else if (e[i].to!=father[now]) low[now]=min(low[now],dfn[e[i].to]);
if (!father[now]&&res>=2) !cut[now]&&(cut[now]=1,++ans);
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i,j; read(t);
while (t--)
{
clear(); read(n); read(m);
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
read(g[i][j]);
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (g[i][j]) build(i,j);
for (i=1;i<=n*m;++i)
if (!dfn[i]) Tarjan(i);
puts(ans?"1":"2");
}
return 0;
}
Luogu T29912 fuck的更多相关文章
- Luogu 魔法学院杯-第二弹(萌新的第一法blog)
虽然有点久远 还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题 沉迷游戏,伤感情 #include <queue> ...
- luogu p1268 树的重量——构造,真正考验编程能力
题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...
- [luogu P2170] 选学霸(并查集+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...
- [luogu P2647] 最大收益(贪心+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...
- Luogu 考前模拟Round. 1
A.情书 题目:http://www.luogu.org/problem/show?pid=2264 赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句 赛后:卧槽 怎么只有40 B.小 ...
- luogu P2580 于是他错误的点名开始了
luogu P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...
- CJOJ 1331 【HNOI2011】数学作业 / Luogu 3216 【HNOI2011】数学作业 / HYSBZ 2326 数学作业(递推,矩阵)
CJOJ 1331 [HNOI2011]数学作业 / Luogu 3216 [HNOI2011]数学作业 / HYSBZ 2326 数学作业(递推,矩阵) Description 小 C 数学成绩优异 ...
- Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂)
Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂) Description 广义的斐波那契数列是指形如\[A_n=p*a_{n-1}+q*a_{n-2}\]的数列.今给定数列的两系数p和q, ...
- Luogu 1962 斐波那契数列(矩阵,递推)
Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n ...
随机推荐
- Angular2 富文本编辑器 ng2-ckeditor 的使用
本文介绍如何在 Angular 中使用 ng2-ckeditor 控件,示例代码基于 angular 6.0.2,node 8.11.2, ng2-ckeditor 4.9.2 环境 1. 安装 ...
- 使Volley完美支持自定义证书的Https
其实在最早的版本里,Volley甚至是不支持https协议的,只能跑http,当然你也可以自己修改他的源码让他支持,如今volley的代码经过一些改进以后, 已经可以完美支持https协议了,无论是在 ...
- ViewPager防止Fragment销毁以及取消Fragment的预加载
存在的问题 1. 默认情况下,ViewPager会根据setOffscreenPageLimit()方法设置的大小,自动预加载2. 还是根据setOffscreenPageLimit()方法设置的大小 ...
- Yarn 安装 on centos7
本文演示如何在CentOS7上安装Yarn.注意这个Yarn是Js包管理器,不是Hadoop的资源调度器. 1 准备工作 1.1 浏览器访问安装包下载地址: https://github.com/ya ...
- 非对称加密与GPG/PGP
最近浏览博客的时候,经常会看到博主展示出自己的公钥,于是对 GPG/PGP 产生兴趣.下面简单记录相关文章的链接,方便以后了解. 简介: 1991年,程序员Phil Zimmermann为了避开政府的 ...
- Elasticsearch一些常用操作和一些基础概念
1.查看集群健康状态 [root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/health?v epoch timestamp ...
- NavigationController相关颜色设置
一.当push进去一个界面后,返回按钮颜色改变: self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
- 2018. first week now at home
外面雪刚停. 现在是2018.1.5 2018 needs to consider next steps了.未雨绸缪啊 下面是2017年last working day 外面黑了,水面上黑 ...
- 关于ThinkPHP执行长时间任务可能导致PHP使用内存越来越大的问题
ThinkPHP执行长时间任务时,可能导致PHP使用内存越来越大,最后因为内存超出配置限额而程序挂掉. 其实这在很久以前就无意之中发现的一个问题. 3.x之前有这个问题,5.0以后的,应该是已修复了的 ...
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...