【codeforces 510B】Fox And Two Dots
2017-10-04 18:44
381 查看
【题目链接】:http://codeforces.com/contest/510/problem/B
【题意】
让你在一个二维的方格里面找环;
两个点有相邻的边它们才是相连的;
有环YES,没环NO
【题解】
写个flood fill,记录之前走的方向是哪个方向就好;
下次不要往回走;
然后如果能够碰到之前走过的点,就说明形成环了.
【Number Of WA】
0
【完整代码】
#include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define mp make_pair #define ps push_back #define fi first #define se second #define rei(x) cin >> x #define pri(x) cout << x #define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii; typedef pair<LL,LL> pll; const int dx[9] = {0,1,0,-1,0,-1,-1,1,1}; const int dy[9] = {0,0,-1,0,1,-1,1,-1,1}; const double pi = acos(-1.0); const int N = 60; int n,m,a ,tag ,cnt,now; char s ; bool dfs(int x,int y,int pre) { if (x<=0 || x>=n+1||y<=0 || y>=m+1) return false; if (a[x][y]!=now) return false; if (tag[x][y]==cnt) return true; tag[x][y] = cnt; bool ok = false; rep1(j,1,4) if (j!=pre) { int tpre = j+2; if (tpre>4) tpre-=4; ok = ok|dfs(x+dx[j],y+dy[j],tpre); } return ok; } int main() { //freopen("F:\\rush.txt","r",stdin); ios::sync_with_stdio(false); rei(n),rei(m); rep1(i,1,n) { rei((s+1)); rep1(j,1,m) a[i][j]=s[j]-'A'+1; } rep1(i,1,n) rep1(j,1,m) if (tag[i][j]==0) { now = a[i][j]; ++cnt; if (dfs(i,j,-1)) return pri("Yes"<<endl),0; } pri("No"<<endl); //printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC); return 0; }
相关文章推荐
- 【CodeForces】510B - Fox And Two Dots(bfs)
- 【CodeForces 510B】Fox And Two Dots
- 【Codeforces】-510B-Fox And Two Dots(dfs)
- codeforces-510B-Fox And Two Dots【DFS】
- CF 510B(Fox And Two Dots-图上找环)
- Codeforces-----510B Fox And Two Dots 搜索
- CodeForces 510 B. Fox And Two Dots(DFS 啊)
- codeforces 510.B Fox And Two Dots (DFS好题)
- codeforces 512 B Fox And Two Dots 解题报告
- Codeforces 510B:Fox And Two Dots(DFS变形+技巧)
- DFS CodeForces 510B (Fox And Two Dots)
- codeforces-Fox And Two Dots【DFS】(思维)
- 【codeforce-510B】fox and two dots
- CodeForces 510B B. Fox And Two Dots
- [DFS] Codeforces 510B:Fox And Two Dot
- B. Fox And Two Dots
- Codeforces Round #290 (Div. 2) B. Fox And Two Dots dfs
- Codeforces Round #290 (Div. 2) B. Fox And Two Dots dfs
- Codeforces Round #290 (Div. 2)B. Fox And Two Dots(dfs)
- B. Fox And Two Dots