题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
Fox And Two Dots | ★☆☆☆☆ | 答案正确 | 100 | 2015-02-25 17:40:14 | mn打反(23) |
找出n*m地图上能形成至少四个点不重回路的路线。
dfs,找一个数组记录每个点的深度以保证至少四个点不重。
510B.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> #include<iostream> #include<string> #include<vector> #include<iomanip> #include<algorithm> #include<cstring> #include<cmath> #include<bitset> #include<set> #include<sstream> using namespace std; #define llu unsigned long long #define lld long long #define ci const lld& #define si(n) scanf("%lld",&n) #define f0(i,n) for(lld i=0;i!=n;++i) int track[60][60]={},sx[4]={1,0,-1,0},sy[4]={0,1,0,-1}; lld n,m; string s[60]={}; void dfs(ci x,ci y,ci deep,const char& c) { if(x<0||y<0||x>=n||y>=m)return; if(s[x][y]!=c)return; //cout<<x<<" "<<y<<" "<<deep<<endl; if(track[x][y]&&deep-track[x][y]>=4) { cout<<"Yes"; exit(0); } if(track[x][y])return; track[x][y]=deep; f0(i,4) dfs(x+sx[i],y+sy[i],deep+1,c); } int main() { si(n);si(m); f0(i,n)cin>>s[i]; f0(i,n)f0(j,m)//fixed:n->m// { memset(track,0,sizeof(track)); dfs(i,j,1,s[i][j]); } cout<<"No"; exit(0); } |