博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2375
阅读量:7231 次
发布时间:2019-06-29

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

思路:

Tarjan缩点+一些特判

//By SiriusRen#include 
#include
#include
#include
#include
using namespace std;stack
stk;int n,m,map[666][666],xx[]={ 1,-1,0,0},yy[]={ 0,0,1,-1};int v[1001000],next[1001000],first[1001000],tot=0,ans1=0,ans2=0;int low[1001000],dfn[1001000],cnt=0,vis[1001000],t=0,p[1001000],out[1001000],in[1001000];bool check(int sx,int sy,int x,int y){ return map[sx][sy]>=map[x][y]&&x>=1&&x<=n&&y>=1&&y<=m;}void add(int x,int y){v[tot]=y,next[tot]=first[x];first[x]=tot++;}void tarjan(int x){ dfn[x]=low[x]=++cnt; vis[x]=1;stk.push(x); for(int i=first[x];~i;i=next[i]) { if(!dfn[v[i]])tarjan(v[i]),low[x]=min(low[x],low[v[i]]); else if(vis[v[i]])low[x]=min(low[x],dfn[v[i]]); } if(low[x]==dfn[x]) { t++; int temp; do { temp=stk.top();stk.pop(); vis[temp]=0; p[temp]=t; }while(temp!=x); }}int main(){ memset(first,-1,sizeof(first)); scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&map[i][j]); } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=0;k<=3;k++) { if(check(i,j,i+xx[k],j+yy[k])) { add(i*m+j,(i+xx[k])*m+j+yy[k]); } } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(!dfn[i*m+j]) { tarjan(i*m+j); } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=0;k<=3;k++) { if(check(i,j,i+xx[k],j+yy[k])&&p[i*m+j]!=p[(i+xx[k])*m+j+yy[k]]) { out[p[i*m+j]]++;in[p[(i+xx[k])*m+j+yy[k]]]++; } } } } for(int i=1;i<=t;i++) { if(!out[i])ans1++; if(!in[i])ans2++; } if(t>1)printf("%d",max(ans1,ans2)); else putchar('0');}

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532331.html

你可能感兴趣的文章
css3基本属性
查看>>
PEB结构学习
查看>>
python之属性描述符与属性查找规则
查看>>
linux之各目录作用
查看>>
海淀、西城、东城各类小学排名(转载)
查看>>
AbstractFactory抽象工厂模式(创建型模式)
查看>>
Flex3 + Spring配置
查看>>
Android牟利之道(四)--如何推广你的产品,即你的APP
查看>>
Android的各种Drawable讲解
查看>>
java学习笔记9.20
查看>>
如何防止在同一台机器上重复登录(WinForm程序)
查看>>
使用Fiddler调试Wcf Rest
查看>>
XSLD 简单小例子
查看>>
数组去重
查看>>
安装和部署Jenkins
查看>>
cs231n 17-18 assignment2 出现 No module named 'past' 解决方法
查看>>
Ajax基础
查看>>
全面理解 git
查看>>
Activiti Modeler初探实践
查看>>
NET Core Kestrel部署HTTPS使用SSL证书
查看>>