POJ 2375
BFS+强连通。输出max(缩点后出度为0的点数,缩点后入度为0的点数)。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cctype>
#include <algorithm>
#define LL unsigned __int64
using namespace std; const int N= ; struct Edge{
int u,v;
int next;
}edge[N*];
int tot,index;
int head[N],dfn[N],low[N],stack[N],st;
int outdegree[N],indegree[N];
int belong[N],beg;
bool instack[N];
int map[][]; int dir[][]={
{,},
{,-},
{,},
{-,}
}; void addedge(int u,int v){
edge[tot].u=u;
edge[tot].v=v;
edge[tot].next=head[u];
head[u]=tot++;
} void Tarjan(int u) {
dfn[u]=low[u]=++index;
stack[st++]=u;
instack[u]=true;
for(int e=head[u];e!=-;e=edge[e].next){
int v=edge[e].v;
if (dfn[v]==-) {
Tarjan(v) ;
low[u] = min(low[u], low[v]) ;
}
else if (instack[v]) {
low[u] = min(low[u], dfn[v]) ;
}
}
int v;
if (dfn[u] == low[u]) {
beg++;
outdegree[beg]=indegree[beg]=;
do{
v=stack[--st];
belong[v]=beg;
instack[v]=false;
}while(u!= v);
}
} bool ok(int i,int j,int x,int y){
if(i>=&&i<x&&j>=&&j<y) return true;
return false;
} int main(){
int x,y;
while(scanf("%d%d",&y,&x)!=EOF){
for(int i=;i<x;i++){
for(int j=;j<y;j++)
scanf("%d",&map[i][j]);
} tot=index=st=beg=;
int u,v,tx,ty;
int spoint=x*y;
for(int i=;i<=spoint;i++){
head[i]=dfn[i]=low[i]=belong[i]=-;
instack[i]=false;
} for(int i=;i<x;i++){
for(int j=;j<y;j++){
u=i*y+j;
for(int k=;k<;k++){
tx=i+dir[k][];
ty=j+dir[k][];
if(ok(tx,ty,x,y)){
if(map[tx][ty]<=map[i][j]){
v=tx*y+ty;
addedge(u,v);
}
}
}
}
} for(int i=;i<spoint;i++){
if(dfn[i]==-){
Tarjan(i);
}
} for(int i=;i<spoint;i++){
u=i;
for(int e=head[u];e!=-;e=edge[e].next){
v=edge[e].v;
if(belong[u]!=belong[v]){
outdegree[belong[u]]++;
indegree[belong[v]]++;
}
}
} int ou=,in=;
if(beg==){
puts("");
continue;
}
for(int i=;i<=beg;i++){
if(outdegree[i]==){
ou++;
}
if(indegree[i]==)
in++;
} printf("%d\n",max(ou,in));
}
return ;
}
POJ 2375的更多相关文章
- POJ 2375 Cow Ski Area (强连通分量)
题目地址:POJ 2375 对每一个点向与之相邻并h小于该点的点加有向边. 然后强连通缩点.问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者就可以.注意,当强连通分量仅仅 ...
- POJ 2375 Cow Ski Area(强连通)
POJ 2375 Cow Ski Area id=2375" target="_blank" style="">题目链接 题意:给定一个滑雪场, ...
- POJ 2375 Cow Ski Area[连通分量]
题目链接:http://poj.org/problem?id=2375题目大意:一片滑雪场,奶牛只能向相邻的并且不高于他当前高度的地方走.想加上缆车是的奶牛能从低的地方走向高的地方,求最少加的缆车数, ...
- POJ 2375 Cow Ski Area
Cow Ski Area Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original I ...
- poj 2375 Cow Ski Area bfs
这个题目用tarjan找联通块,缩点,然后统计出入度为0的点理论上是可行的,但问题是会暴栈.考虑到这个题目的特殊性,可以直接用一次bfs找到数字相同且联通的块,这就是一个联通块,然后缩点,统计出入度即 ...
- POJ 2375 Cow Ski Area【tarjan】
题目大意:一个W*L的山,每个山有个高度,当且仅当一个山不比它相邻(有公共边的格子)的山矮时能够滑过去,现在可以装化学电梯来无视山的高度滑雪,问最少装多少电梯使得任意两点都可到达 思路:最后一句话已经 ...
- Book---强连通分量
这几天一直在做强连通,现在总结一小下 1.定义 在一个有向图中,如果任意的两个点都是相互可达的,就说这个图是强连通的,有向图的极大强连通子图,称为强连通分量 2.求法 学的是白书上的tarjan算法 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- POJ 3278:The merchant(LCA&DP)
The merchant Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6864 Accepted: 2375 Desc ...
随机推荐
- tpshop编辑框中上传图片过大变模糊
tpshop编辑框中上传图片过大变模糊 图片超过2500的高就会变模糊 设置最大的高度修改一下
- Nginx报错-找不到路径
前言 最近在git bash里输入命令启动Nginx服务,总提示找不到路径,令我困惑不已 我反复检查安装路径和输入命令,确认无误 小技巧:复制路径可直接ctrl+c后在git ba ...
- CentOS7 搭建Kafka(三)工具篇
CentOS7 搭建Kafka(三)工具篇 做为一名懒人,自然不喜欢敲那些命令,一个是容易出错,另外一个是懒得记,能有个工具就最好了,一查还挺多,我们用个最主流的Kafka Manager Kafka ...
- jar 包中文乱码注释显示问题解决方案
通过maven下载源代码,直接通过eclipse浏览源代码时,发现中文注释为乱码的问题.其实这个eclipse默认编码造成的问题.可以通过以下方法解决: 修改Eclipse中文本文件的默认编码:win ...
- Asp.net MVC Checkbox控件 和 Nullable<bool>, 或bool?类型
@Html.CheckBoxFor() 这个方法生成两个Input HTML标签,不明白为什么这样,如果数据库是Nullable<bool>类型,就会报错. 网上的解决方法是这样: 方法一 ...
- 前端编码规范(2)HTML 规范
文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html> (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及它的属性,比如 a ...
- bcg库使用心得两则
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近帮同事解决了两个BCG库的使用问题,特记录下来. 一是在outlook风格停靠栏上创建对话框的做法.代码如下: C ...
- Vue 爬坑之路—— 使用 Vuex + axios 发送请求
Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...
- promise原理及使用方法
Promise 的含义 所谓Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息. re ...
- jQuery实现菜单全选/不选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...