hdu1198 Farm Irrigation DFS
来源:互联网 发布:ios软件安装失败 编辑:程序博客网 时间:2024/05/18 01:28
http://acm.hdu.edu.cn/showproblem.php?pid=1198
核心思想是dfs,非常简单,一个地和另一个地在邻边上都有水道即连通,用标记求出连通子图数量即可。
但是题目故意出出来恶心死人
对于这样的题目,a了没意思,你还得写的最短,才算是过,对不对。
我们把题目中的几个样式图都存到数组里去,存的方式是一个图对应4个bool变量,分别是上下左右是否有管道
记得把0位置留给没有任何管道的图,我们把这个要求的图的周围都填上这种没有任何管道的图(通过memset),就不用管边界了。
#include<iostream>#include<iomanip>#include<cstdio>#include<cstring>#include<sstream>#include<stack>#include<queue>#include<fstream>#include<algorithm>#include<map>#include<set>#include<vector>#include<cmath>#define CLR(x) memset(x,0,sizeof(x))#define SETMAX(x) memset(x,0x3f,sizeof(x));#define ll long long#define eps 1e-6#define pow2(x) ((x)*(x))#define forto(i,n) for(int i=0;i<n;i++)#define for1to(i,n) for(int i=1;i<=n;i++)#define VI vector<int>using namespace std;const double PI=acos(-1.0);#define INF 0x3f3f3f3f#define NINF 0xbfffffffusing namespace std;int dir[][2]={{-1,0},{0,1},{1,0},{0,-1}};bool Dir[][4]= //分别对应 保留图、A、B、C、D……{{0,0,0,0},{1,0,0,1},{1,1,0,0},{0,0,1,1},{0,1,1,0},{1,0,1,0},{0,1,0,1},{1,1,0,1},{1,0,1,1},{0,1,1,1},{1,1,1,0},{1,1,1,1}};int M[55][55];bool Visit[55][55];void dfs(int x,int y){ forto(i,4) { int tarx(x+dir[i][0]); int tary(y+dir[i][1]); if ( !Visit[tarx][tary]&& Dir[M[x][y]][i]&&Dir[M[tarx][tary]][(i+2)%4] ///(i+2)%4是对边 ) { Visit[tarx][tary]=true; dfs(tarx,tary); } }}int main(){ cin.sync_with_stdio(false); #ifndef ONLINE_JUDGE freopen("test.txt","r",stdin); #endif // ONLINE_JUDGE int n,m; while (cin>>n>>m,n!=-1||m!=-1) { char tp; CLR(Visit); CLR(M); for1to(i,n) { for1to(j,m) { cin>>tp; M[i][j]=tp-'A'+1; //0是保留的无管道的样式,1是A图 } } int result(0); for1to(i,n) { for1to(j,m) { if (!Visit[i][j]) { Visit[i][j]=true; result++; dfs(i,j); } } } cout<<result<<endl; } return 0;}
0 0
- hdu1198 Farm Irrigation dfs
- hdu1198 Farm Irrigation DFS
- hdu1198 Farm Irrigation(DFS)
- hdu1198 Farm Irrigation (DFS)
- zoj2412 & hdu1198 - Farm Irrigation (DFS实现)
- HDU1198 Farm Irrigation
- HDU1198--Farm Irrigation
- HDU1198 Farm Irrigation
- Farm Irrigation(HDU1198)(幷查集)
- HDU1198 Farm Irrigation
- HDU1198-Farm Irrigation
- hdu1198 Farm Irrigation
- hdu1198 Farm Irrigation(DFS,并查集)
- hdu1198 Farm Irrigation —— dfs or 并查集
- hdu1198 Farm Irrigation 并查集或者dfs
- HDU1198(Farm Irrigation)-并查集
- HDU1198-Farm Irrigation(并查集应用)
- Hdu1198 - Farm Irrigation - 并查集
- 统计二进制数中1 的个数
- 通过分析SQL语句的执行计划优化SQL(总结)
- opengl(一)
- 【OpenCV】入门资源和学习博客列表
- CodeForces—301A—Combination Lock
- hdu1198 Farm Irrigation DFS
- android property
- LeeCode 删除数组中某一特定值的元素,并返回新的数组长度
- hdu 2604 Queuing(矩阵快速幂)
- 回调机制
- 【Android开发】经典范例1-在GridView中显示SD卡上的全部图片
- 扩展三角形类求面积和打印
- uva-10820-Send a Table 欧拉函数,筛法求欧拉函数
- GWT(Google Web Toolkit)学习