先正着走一次把所有可行路径标记出来,然后倒着走两条路径,一条是能向下就向下的路径,另一条能向右就向右. 如果这两条路径相交,那么(1,1)-(n,m)路径上比有个必经点,把这个必经点封上,答案是1,如果没有必经点答案是2,如果(1,1)-(n,m)不连通,答案是0 直接用递归dfs会爆栈.所以要用栈来代替递归 #include<bits/stdc++.h> using namespace std; #define N 1000005 char mp[N]; int n,m; struct No…