ZCMU—1728
2016-12-26 11:19
218 查看
1728: B
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 59 Solved: 33
[Submit][Status][Web
Board]
Description
有一个n*m的矩阵,矩阵中的每个格子都涂有颜色。不同的颜色由不同的大写字母表示。如果这个矩阵中至少有一个全部由一种颜色组成的环,那么称这个矩阵是一个完美的矩阵。这个条件等价于存在一个格子的序列d1, d2, d3, …, dk满足下列条件:1. 对于所有的di和dj,若i != j,那么di != dj。
2. K >= 4。
3. 所有的格子都属于同一种颜色。
4. 对于所有的1 <= I <= k – 1,di 都和di + 1相邻,当然dk 和d1也必须相邻,相邻的意思是两个格子有一条公共边。
对于一个给定的矩阵,你需要输出这个矩阵是不是完美的矩阵。
Input
输入包含多组测试数据。每组测试数据的第一行有两个正整数n,m(2 <= n, m <= 50),代表这个矩阵的大小。接下来n行,每行有m个大写字母,代表这个矩阵。Output
对于每组测试数据,输出一行,如果这个矩阵的完美矩阵则输出“Yes”,否则输出“No”。Sample Input
3 4AAAA
ABCA
AAAA
3 4
AAAA
ABCA
AADA
4 4
YYYR
BYBY
BBBY
BBBY
7 6
AAAAAB
ABBBAB
ABAAAB
ABABBB
ABAAAB
ABBBAB
AAAAAB
2 13
ABCDEFGHIJKLMN
OPQRSTUVWXYZ
Sample Output
YesNo
Yes
Yes
No
【分析】
判断有没有回路...图不大,dfs也不会超时,因为每个点只会走一次。当遇到一个没有判断过的点,那么就把跟这个点相连的所有点染色,如果染色途中发现碰到已经被染色并且颜色相同的位置时,就可以判定这一条是回路,染色的时候记得记录一下当前状态是从哪个状态来的(也就是xx→x,yy→y),染色的时候别回头就行了。
【代码】
#include <stdio.h> #include <string.h> char s[60][60]; int f[60][60]; int t,n,m; void find(int xx,int yy,int x,int y,int now) { // printf("%d %d**%c\n",x,y,now); if (t||f[x][y]==now) { t=1;return; } f[x][y]=now; if (x>0 && s[x-1][y]==now && (x-1!=xx || y!=yy)) find(x,y,x-1,y,now); if (y>0 && s[x][y-1]==now && (y-1!=yy || x!=xx)) find(x,y,x,y-1,now); if (x<=n-1 && s[x+1][y]==now && (x+1!=xx || y!=yy)) find(x,y,x+1,y,now); if (y<=m-1 && s[x][y+1]==now && (x!=xx || y+1!=yy)) find(x,y,x,y+1,now); } int main() { while (~scanf("%d%d",&n,&m)) { t=0; memset(f,0,sizeof(f)); for (int i=0;i<n;i++) scanf("%s",s[i]); for (int i=0;i<n;i++) for (int j=0;j<m;j++) if (!f[i][j]) { find(-1,-1,i,j,s[i][j]); if (t) {puts("Yes");goto out;} } printf("No\n"); out:; } return 0; }
相关文章推荐
- hd 1728 逃离迷宫
- hdu 1728 逃离迷宫 bfs
- HDU ACM 1728 逃离迷宫 (广搜BFS)
- hdu 1728 逃离迷宫
- hdu 1728 搜索求最少的转向次数
- HDOJ(1728)逃离迷宫
- HDU 1728 逃离迷宫
- HDU 1728 逃离迷宫
- HDU 1728 逃离迷宫
- 【权值分块】bzoj3224 Tyvj 1728 普通平衡树
- HDU 1728 逃离迷宫 DFS+标记转弯数+优化
- [BZOJ3224]Tyvj 1728 普通平衡树 && 重写平衡树
- 【Treap】[BZOJ 3224]Tyvj 1728 普通平衡树
- HDU 1728--【BFS && 记录转弯次数】
- hdu 1728 逃离迷宫 经典BFS
- bzoj3224 Tyvj 1728 普通平衡树(名次树+处理相同)
- zcmu1102
- 【BZOJ3224】Tyvj 1728 普通平衡树
- hdu 1728 逃离迷宫(BFS)
- HDU - 1728 - 逃离迷宫(dfs)