HDU 6113 度度熊的01世界 (暴力dfs)
2017-08-13 09:37
441 查看
思路:
因为条件是存在一个1的联通块包含着一个0的联通快的才是 0 所以,我们先预处理边界,对于0的边界处理成以访问过,对于边界是1的不做操作。然后暴力判断每个点是否访问过来进行dfs求联通块的个数,如果0的个数和1的个数都是1,那么可以肯定图像为0,如果0的个数是0,1的个数是1,那么图像为1。
#include<stdio.h> #include <iostream> #include<string.h> #include<math.h> #include<algorithm> #define eps 1e-8 typedef long long int lli; using namespace std; int ma[550][550]; bool v[550][550]; char s[550]; int dir[4][2] = {0,-1, 0,1, -1,0, 1,0}; void dfs(int x,int ii,int jj){ v[ii][jj] = 1; for(int i = 0;i <= 3;i++){ int iii = ii+dir[i][0], jjj = jj + dir[i][1]; if(ma[iii][jjj] == x && !v[iii][jjj]){ dfs(x,iii,jjj); } } } int main(){ int n,m; while(~scanf("%d%d",&n,&m)){ memset(ma,0,sizeof(ma)); memset(v,0,sizeof(v)); for(int i = 1;i <= n;i++){ scanf("%s",s); for(int j = 0;s[j];j++){ if(s[j]=='1') ma[i][j+1] = 1; if(s[j]=='0') ma[i][j+1] = -1; } } for(int j = 1;j <= m;j++){ if(!v[1][j] && ma[1][j]==-1) dfs(-1,1,j); if(!v [j] && ma [j]==-1) dfs(-1,n,j); } for(int i = 1;i <= n;i++){ if(!v[i][1] && ma[i][1]==-1) dfs(-1,i,1); if(!v[i][m] && ma[i][m]==-1) dfs(-1,i,m); } int cnt0=0,cnt1=0; for(int i = 1;i <= n;i++){ for(int j = 1;j <= m;j++){ if(!v[i][j]){ if(ma[i][j]==1){ cnt1++; } if(ma[i][j]==-1){ cnt0++; } dfs(ma[i][j],i,j); } } } if(cnt0==cnt1 && cnt1==1){ puts("0"); } else if(cnt0==0 && cnt1 == 1){ puts("1"); } else puts("-1"); } return 0; }
相关文章推荐
- HDU 6113 度度熊的01世界(dfs)
- hdu 6113 度度熊的01世界 (dfs+扩边界)
- 【HDU 6113 度度熊的01世界 】 & DFS
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
- HDU 6113 度度熊的01世界 (DFS
- HDU 6113 度度熊的01世界(简单dfs)
- HDU 6113 度度熊的01世界(dfs)
- hdu 6113 度度熊的01世界(结构体的赋值问题)
- Hdu 6113 - 度度熊的01世界(搜索)
- HDU 6113 度度熊的01世界
- 2017"百度之星"程序设计大赛 - 初赛(A) [ hdu 6108 小C的倍数问题 ] [ hdu 6109 数据分割 ] [ hdu 6110 路径交 ] [ hdu 6112 今夕何夕 ] [ hdu 6113 度度熊的01世界 ]
- HDU 6113 度度熊的01世界【搜索】
- hdu 6113 度度熊的01世界
- 【判连通】HDU 6113 度度熊的01世界
- hdu 6113 度度熊的01世界
- hdu 6113 度度熊的01世界/2017 百度之星
- hdu 6113 度度熊的01世界
- HDU - 6113 度度熊的01世界 (2017"百度之星"程序设计大赛 - 初赛(A)1006)
- hdu 6113 度度熊的01世界【搜索好题】