[每日一题2020.06.08]洛谷P1605 DFS

今天cf又杯具的只写出2题, 虽然AB题20分钟左右就搞定了, 但是CD写了2个小时也没写出来

D题我用到了DFS, 虽然必不正确, 但是我至少发现了一个问题, 那就是我连DFS都忘了, 于是怒找DFS板子写一写...

/*
 * Author: RoccoShi
 * Time: 2020-06-08 02:08:41
*/

#include <bits/stdc++.h>
using namespace std;

int n, m, t, x, y;
int sx, sy, fx, fy;
int a[10][10];
int vis[10][10];
int dx[4] = {0,0,1,-1};
int dy[4] = {-1,1,0,0};

int sum;

void dfs(int x,int y){
	if(x == fx && y == fy){
		sum ++;
		return;
	}
	if(x < 1 || x > n || y > m || y < 1)
		return ;
	{
		for(int i=0; i<4; ++i){
			if(a[x+dx[i]][y+dy[i]] != 1 && !vis[x+dx[i]][y+dy[i]]){
				vis[x][y] = 1;
				dfs(x+dx[i],y+dy[i]);
				vis[x][y] = 0;
			}
		}
	}
	return ;
}



int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> n >> m >> t;
    cin >> sx >> sy >> fx >> fy;
    while(t--){
    	cin >> x >> y;
    	a[x][y] = 1;
    }
    dfs(sx,sy);
    cout << sum;
    return 0;
}
posted @ 2020-06-08 02:13  roccoshi  阅读(30)  评论(0编辑  收藏  举报