poj 2375 Cow Ski Area bfs
来源:互联网 发布:学英语单词的软件 编辑:程序博客网 时间:2024/04/28 12:15
这个题目用tarjan找联通块,缩点,然后统计出入度为0的点理论上是可行的,但问题是会暴栈。考虑到这个题目的特殊性,可以直接用一次bfs找到数字相同且联通的块,这就是一个联通块,然后缩点,统计出入度即可。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int maxn=1e3+9;int a[maxn][maxn];int con;int ss[maxn*maxn],in[maxn*maxn],out[maxn*maxn];int n,m;struct{ int t,s;}que[maxn*maxn];bool text[maxn*maxn];void bfs(){ con=0; memset(text,0,sizeof(text)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(!text[i*m+j]) { int front=1,end=0; que[++end].t=i; que[end].s=j; text[i*m+j]=1; while(front<=end) { int t=que[front].t,s=que[front++].s; for(int p=-1;p<=1;p++) for(int q=-1;q<=1;q++) if(fabs(p)+fabs(q)==1&&t+p>=1&&t+p<=n&&s+q>=1&&s+q<=m) if(a[t][s]==a[t+p][s+q]) if(!text[(t+p)*m+s+q]) { text[(t+p)*m+s+q]=1; que[++end].t=t+p; que[end].s=s+q; } } con++; for(int i=1;i<=end;i++) { ss[que[i].t*m+que[i].s]=con; } }}int main(){// freopen("in.txt","r",stdin); while(scanf("%d %d",&m,&n)!=EOF) { for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); bfs(); memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int p=-1;p<=1;p++) for(int q=-1;q<=1;q++) if(fabs(p)+fabs(q)==1&&i+p>=1&&i+p<=n&&j+q>=1&&j+q<=m) if(a[i][j]>=a[i+p][j+q]) if(ss[(i+p)*m+j+q]!=ss[i*m+j]) { in[ss[(i+p)*m+j+q]]++; out[ss[i*m+j]]++; } int ansin=0,ansout=0,ans; for(int i=1;i<=con;i++) { if(in[i]==0) ansin++; if(out[i]==0) ansout++; } ans=max(ansin,ansout); if(con<=1) printf("0\n"); else printf("%d\n",ans); } return 0;}
- poj 2375 Cow Ski Area bfs
- POJ 2375 Cow Ski Area
- POJ 2375 Cow Ski Area 强连通
- 【POJ】2375 Cow Ski Area 强连通
- POJ 2375 Cow Ski Area 郁闷的Tarjan
- POJ 2375 Cow Ski Area 强连通图最少添边数
- POJ 2375 Cow Ski Area(强连通)
- POJ 2375 Cow Ski Area (强连通分量)
- POJ 2375 Cow Ski Area 增加最小边使图强连通
- POJ2375 Cow Ski Area
- poj 2375 Cow Ski Area 【SCC缩点 求最少增加几条边使图强连通】
- Poj 2375 Cow Ski Area【建图+强连通Kosaraju+缩点染色】
- POJ 2375 Cow Ski Area 雪场缆车(强连通分量)
- POJ2375——Cow Ski Area
- POJ2375 Cow Ski Area 强连通分量
- POJ2375 Cow Ski Area——求强连通分量
- POJ2375 Cow Ski Area 【强连通分量】+【DFS】
- POJ2375 Cow Ski Area【Tarjan】【强连通分量】
- 分享学习JAVA的几点心得体会
- nagios服务端和客户端的正确配置文件
- linux下vim命令详解
- Quartus II编译器
- lua学习:使用Lua处理游戏数据
- poj 2375 Cow Ski Area bfs
- pyramid学习笔记0-准备工作
- 关于ios开发中xcode编译cordova工程出错
- 跳台阶问题 — 某阶台阶坏掉
- Eclipse 中 program arguments 与 VM arguments 的区别
- Ajax概述及浅谈其与服务器的交互过程
- java括号匹配算法
- HDU1181【有向图的传递闭包】
- MyEclipse连接SQL Server 2008数据库的操作方法