二分+DFS
看到这么多大佬写了并查集,BFS的,还没有人写DFS版的,那么肯定是要来水水积分的啦毕竟这可是道伪紫题呢!
做法楼上楼下也讲得很清楚了吧,详见代码的注释
#includeusing namespace std;bool taofen_boys[510][510];//你可以理解为tf[][]//是否需要走到 (不要打我int Map[510][510];//存每个点的高度bool vis[510][510];//是否访问到int n,m;int sx,sy;//起点int dx[5]={0,0,0,1,-1};int dy[5]={0,1,-1,0,0};int mid;vector >flag;//用于存需要走到的点inline int read(){ int tot=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { tot=tot*10+c-'0'; c=getchar(); } return tot;}inline void DFS(int x,int y){ //cout< <<" "< < n||b>m||vis[a][b])continue; if(abs(Map[a][b]-Map[x][y])>mid)continue;//是否满足要求 vis[a][b]=1; DFS(a,b); //这里不用回溯 }}inline bool check(){ memset(vis,0,sizeof(vis)); vis[sx][sy]=1; DFS(sx,sy); /*for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++)cout< <<" "; cout< >1; //cout< <<" "< <<" "< <<" "< <<" "< <