[luogu]P1141 01迷宮-寬搜
題目描述
有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。
你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。
輸入輸出格式
輸入格式:輸入的第1行為兩個正整數n,m。
下面n行,每行n個字元,字元只可能是0或者1,字元之間沒有空格。
接下來m行,每行2個用空格分隔的正整數i,j,對應了迷宮中第i行第j列的一個格子,詢問從這一格開始能移動到多少格。
輸出格式:輸出包括m行,對於每個詢問輸出相應答案。
輸入輸出樣例
輸入樣例#1:2 2 01 10 1 1 2 2
4 4
對於移動類而非合併類的寬搜模板題#include<iostream> using namespace std; const int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0}; int n,m,q[5000001][2],v[1001][1001],t=0,sum[100001]; bool map[1001][1001]; void bfs(int x,int y) { if(v[x][y]!=0) { cout<<sum[v[x][y]]<<endl; return; } t++; int head=0,tail=1,s=1; q[0][0]=x; q[0][1]=y; v[x][y]=t; while(head<tail) { int xx=q[head][0],yy=q[head][1]; for(int i=0;i<4;i++) { int xxx=xx+dx[i],yyy=yy+dy[i]; if(xxx>=1&&xxx<=n&&yyy>=1&&yyy<=n) { if(map[xxx][yyy]!=map[xx][yy]&&v[xxx][yyy]==0) { q[tail][0]=xxx; q[tail][1]=yyy; v[xxx][yyy]=t; s++; tail++; } } } head++; } cout<<s<<endl; sum[t]=s; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { string s; cin>>s; for(int j=1;j<=n;j++) { if(s[j-1]=='0') { map[i][j]=false; } else { map[i][j]=true; } } } for(int i=0;i<m;i++) { int x,y; cin>>x>>y; bfs(x,y); } return 0; }
相關推薦
[luogu]P1141 01迷宮-寬搜
題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。 輸入輸出格式 輸
luogu cogs P1141 01迷宮
pty col span sizeof bsp ans 說明 getch 格式 題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麽你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麽你可以移動到相鄰4格中的某一格0上。 你的任務是:對於給定
P1141 01迷宮
class void 所有 題目 close else 入隊 main 之間 題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麽你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麽你可以移動到相鄰4格中的某一格0上。 你的
洛谷——P1141 01迷宮
兩個 printf blank for 分隔 truct algorithm target 行為 https://www.luogu.org/problem/show?pid=1141 題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麽
洛谷P1141 01迷宮
block 答案 namespace string 存在 ostream ring 他能 ++ 非常難受了可以說..一道普及/提高-的水題我居然改了3天 提交了20次!!我太弱了!! 正文開始: 題目描述: 有一個僅由數字 0 與 1 組成的 n×n 格迷宮。若你位於一格
洛谷P1141 01迷宮(dfs或bfs,回溯更新問題,記憶化或者並查集根結點)
ace else 賦值 www int iomanip 什麽 使用 algorithm 題目鏈接:https://www.luogu.org/problemnew/show/P1141 題目相當於求聯通塊,這個比較簡單,但加上了m次詢問後就是難點所在,很容易超時。 一定
P1141 01迷宮 dfs連通塊
題目描述 有一個僅由數字000與111組成的n×nn \times nn×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰444格中的某一格111上,同樣若你位於一格1上,那麼你可以移動到相鄰444格中的某一格000上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)
P1141 01迷宮 (bfs)
題目描述 有一個僅由數字00與11組成的n \times nn×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰44格中的某一格11上,同樣若你位於一格1上,那麼你可以移動到相鄰44格中的某一格00上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。 輸入輸
洛谷P1141 01迷宮【DFS】
有一個僅由數字00與11組成的n \times nn×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰44格中的某一格11上,同樣若你位於一格1上,那麼你可以移動到相鄰44格中的某一格00上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。
【題解】洛谷P1141 01迷宮 bfs
#include<cstdio> #include<queue> using namespace std; int n,m,a[1010][1010],vis[1010][1010],size[1000010],cnt; char
洛谷P1141 01迷宮 經典 Dfs + 記憶化搜尋,並查集
將方向用自定義陣列迴圈化 ,讀入時注意字串處理,走過的地方記憶化。並查集,不同聯通塊採用不同顏色標記記憶,方便多次查詢。並記憶每種顏色染色數量(即聯通塊大小)。 #include<cstdio&
P1141 01迷宮(BFS)
題目描述 有一個僅由數字00與11組成的n \times nn×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰44格中的某一格11上,同樣若你位於一格1上,那麼你可以移動到相鄰44格中的某一格00上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自
P1141 01迷宮-洛谷
01迷宮 題目描述 輸入輸出格式 輸入輸出樣例 說明 解析 P1141 01迷宮 題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1
P1141 01迷宮題解
題目描述 有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。 你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。 輸入輸出格式
P1141 01迷宮 題解
這道題我一共寫了22遍,最後AC的時候手都在顫抖,,, 先說一下思路,洛谷有大佬用並查集,等等各種高階操作。雖然我也用並查集寫了,但是效果不是太理想。 我的思路是G[ ][ ]存放圖,V[ ][ ]並不是存放圖狀態,V[ ] [ ]存放這是第幾個連通圖,再用一個數組a[
洛谷 - P1141 - 01迷宮 - dfs
bit scan pan set esp main memset 一次 標記 https://www.luogu.org/problemnew/show/P1141 能互相到達的格子的答案自然是一樣的,第一次dfs標記聯通塊,第二次dfs把cnt傳遞到整個聯通卡並順手消除
【P1141】01迷宮 {並查集}
bfs public char num std oid ++ urn namespace 1、ptr -> x == (*ptr).x != *ptr.x 2、並查集尋父親形式參數要!用!引!用! #include <iostream> #inc
洛谷P1141【01迷宮】
\n bool bsp oid %s printf tps 拓展 show 題目鏈接 P1141 01迷宮 直接暴力的做法就是對於每一個詢問都進行bfs,這樣復雜度最壞可以達到O(mn2),這樣顯然過不了的 我們發現,對於一個點所拓展的路徑上的所有點能走的格子數是一樣的
LeetCode 79,這道走迷宮問題為什麼不能用寬搜呢?
本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 今天是LeetCode專題第48篇文章,我們一起來看看LeetCode當中的第79題,搜尋單詞(Word Search)。 這一題官方給的難度是Medium,通過率是34.5%,點贊3488,反對170。單從這份資料上來看,這題的
noip 01迷宮(BFS+記憶化)
一個 col using char rst clu tps str show 題目鏈接:https://www.luogu.org/problem/show?pid=1141 題意:給出一個僅由數字0與1組成的n×n格迷宮。放0的那一格可以4個方向走到放1那一