Codeforces Round #290 (Div. 2) B (dfs)
2017-03-03 19:15
302 查看
题目链接:http://codeforces.com/problemset/problem/510/B
题意:判断图中是否有某个字母成环
思路:直接dfs就好了,注意判断条件:若下一个字母与当前字母相同且已搜过,则存在满足题意的环
代码:
题意:判断图中是否有某个字母成环
思路:直接dfs就好了,注意判断条件:若下一个字母与当前字母相同且已搜过,则存在满足题意的环
代码:
1 #include <bits/stdc++.h> 2 #define MAXN 60 3 using namespace std; 4 5 int mp[MAXN][MAXN], vis[MAXN][MAXN], m, n; 6 int dir[4][2]={0, 1, 1, 0, -1, 0, 0, -1}; 7 bool flag=false; 8 9 void dfs(int x, int y, int direction){ 10 if(flag){ 11 return; 12 } 13 for(int i=0; i<4; i++){ 14 int xx=x+dir[i][0]; 15 int yy=y+dir[i][1]; 16 if(xx>=0&&xx<n&&yy>=0&&yy<m){ 17 if(i+direction!=3&&vis[xx][yy]&&mp[xx][yy]==mp[x][y]){ //***若下一个数字与当前数字相同且已经搜过,则存在满足题意的环,注意别往回的方向搜了 18 flag=true; 19 return; 20 }else if(!vis[xx][yy]&&mp[xx][yy]==mp[x][y]){ 21 vis[xx][yy]=1; 22 dfs(xx, yy, i); 23 } 24 } 25 } 26 } 27 28 int main(void){ 29 char ch; 30 cin >> n >> m; 31 for(int i=0; i<n; i++){ 32 for(int j=0; j<m; j++){ 33 cin >> ch; 34 mp[i][j]=ch-'A'+1; 35 } 36 } 37 for(int i=0; i<n; i++){ 38 for(int j=0; j<m; j++){ 39 if(!vis[i][j]){ 40 vis[i][j]=1; 41 dfs(i, j, 0); 42 if(flag){ 43 cout << "Yes" << endl; 44 return 0; 45 } 46 } 47 } 48 } 49 cout << "No" << endl; 50 return 0; 51 }
相关文章推荐
- Codeforces Round #256 (Div. 2)E(DFS暴搜)
- Codeforces Round #428 (Div. 2) C. Journey(dfs deep
- CodeForces 525D Arthur and Walls(DIV2 D) (DFS+YY)
- Codeforces Round #428 (Div. 2) C. Journey(dfs)
- 【 Codeforces Round #268 (Div. 1)】B.Two Set【dfs找增广路】
- Codeforces Round #407 (Div. 2)-E-The Great Mixing-滚动数组或者dfs
- Codeforces Round #357 (Div. 2) -- D. Gifts by the List(DFS)
- Codeforces Round #430 (Div. 2) C. Ilya And The Tree dfs+set
- Codeforces Round #369 (Div. 2) D. Directed Roads (DFS)
- Codeforces Round #200 (Div. 1) D Water Tree 树链剖分 or dfs序
- Codeforces Round #306 (Div. 2) B(dfs)
- Codeforces Round #398 (Div. 2) -- C. Garland (dfs)
- 【DFS——Codeforces Beta Round #14 (Div. 2)】D. Two Paths
- Codeforces Round #358 (Div. 2)——C. Alyona and the Tree(树的DFS+逆向思维)
- 【dfs找环】Codeforces Beta Round #80 (Div. 1 Only)——B. Cthulhu
- Codeforces Round #336 (Div. 2) 608D Zuma(dfs+dp)
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)-D(DFS)
- Codeforces Round #381 (Div. 2)(A(dfs)+B(前缀和))
- Codeforces Round #428 (Div. 2) C. Journey(dfs deep
- Codeforces Round #398 (Div. 2) C. Garland —— DFS