1 #include 2using
namespace
std;
3const
int maxn=1000;4
intn,m;5//
地圖尺寸
6int maap[maxn+10][maxn+10];7
//查詢零一地圖中的1聯通塊個數
8bool vis[maxn+10][maxn+10];9
int direx=;
10int direy=;
11//
四向聯通
12void dfs(int x,int
y)1325}
26}27int
main()
2837 }//
輸入38
for(int i=1;i<=n;i++)
3947
}48 }//
dfs計數模組,不能把它直接加在輸入環節!!
49//
不然地圖都沒輸入完求個啥的聯塊!!
50 cout51 }
1 #include 2using
namespace
std;
3const
int maxn=1000;4
int maap[maxn+10][maxn+10];5
//零一迷宮的最短路問題(不剪枝優化)6//
0是障礙,1是道路
7bool vis[maxn+10][maxn+10];8
//訪問標記
9int direx=;
10int direy=;
11//
四向聯通
12int
n,m;
13//
地圖尺寸
14int
stx,sty,edx,edy;
15//
起點終點座標
16int
minstep;
17//
最少步數(初始化為矩陣內遍歷步數)
18void dfs(int x, int y, int
step)
1929
for(int i = 0; i < 4; i++)
3038
}39 vis[x][y] = false;//
回溯40}41
intmain()
4251
}52 cin>>stx>>sty>>edx>>edy;//
輸入53 dfs(stx,sty,0
);54
//深搜
55 cout56return0;
57 }
1void dfs(int x, int y, int
step)28
/*********************************
*/9 vis[x][y] = true;10
//打訪問標記
11if(x == edx && y ==edy)
12//
到達終點
1318
for(int i = 0; i < 4; i++)
1927
}28 vis[x][y] = false;//
回溯29 }
學習記錄 BFS的聯通塊與計步
1 include 2 using namespace std 3struct node 7 queueq 8const int maxn 200 9 intmaap maxn maxn 10bool book maxn maxn 11int m,n 12int next 4 2 18void bf...
bzoj4401 塊的計數 dfs
首先隨便選乙個根進行dfs得到size x 表示以x為根節點的子樹的大小。然後我們假設答案為t,需要判斷t是否可行。首先顯然需要t n。顯然每乙個塊有且僅有乙個根,定義為這個塊的最高點。然後我們發現乙個點x是塊的根的必要條件是t size x 這個是顯然的。然後我們統計有多少個size x 被t整除...
2017 9 26 塊的計數 思考記錄
這種題就屬於那種描述很簡單,要求很簡單,但就是無從下手的題 這個題我只有n根n做法 列舉因數檢驗。首先對於任何塊的大小,方案唯一,這是顯然的,如果劃分位置改變1,一定有乙個位置 1,乙個位置 1,不符題意 然後我們還需要發現乙個性質,如果能分成大小為n的塊,子樹節點數的數量是n的倍數的數量一定為總點...