第二天叫醒我的不是鬧鐘,是夢想!
題目描述
用乙個nn的矩陣表示乙個島嶼,島嶼中有陸地和水域,陸地用0表示,水域用1表示,你只能在陸地上行走,在陸地上行走不需要花費任何費用,給定起點的座標(sx,sy)與終點座標(ex,ey),保證這兩個點必定是陸地。
你可以在任意兩塊陸地上建立乙個傳送門且最多只能建乙個傳送門,傳送門可以使兩個點互達,費用是兩點間橫座標、縱座標的差的平方和,即(sx-ex)2+(sy-ey)2。
求從起點起到終點的最小花費,若不需要建傳送門可直接到達終點則花費為0。
輸入
有多組測試資料。
第一行輸入乙個正整數t(2≤t≤10),表示測試資料的組數。
對於第組測試資料輸入如下:
第一行輸入乙個正整數n(1≤n≤100)。
第二行輸入起點座標sx,sy。
第三行輸入終點座標ex,ey。
接下來的n行輸入乙個nn的01矩陣,0與1之間無空格,詳見樣例。
輸出
對於每組測試資料輸出一行,即乙個整數表示該組資料的最小花費。
樣例輸入 copy35
1 15 5
00001
11111
00111
00110
00110
31 3
3 1010
101010
21 1
2 200
10樣例輸出 copy108
0提示
對於100%的資料,2≤t≤10,1≤n≤100。
//比賽中一直段錯誤,一直沒改出來。改寫bfs了
//如果能走通就輸出0,如果不行就把周圍0的點記錄一下,然後從終點再跑一下,再記錄。然後公式求即可
#include.h>
using namespace std;
const int n
=110
;int sx,sy,ex,ey,n;
int dx[4]
=;int dy[4]
=;int vis[n]
[n],f,cnt;
char s[n]
[n];
struct node
a[1000
],b[
10000];
void
bfs(int sx,int sy,int ex,int ey,node a[
],int &cnt ,int f));
a[++cnt]
=node
;while
(q.size()
)for
(int i=
0;i<
4;i++))
; a[
++cnt]
=node;}
}}int main()
f=0;
bfs(ex,ey,sx,sy,b,cnt2,f)
; int minv=
0x3f3f3f3f
;// for(int )
for(int i=
1;i<=cnt1;i++
)for
(int j=
1;j<=cnt2;j++
) minv=
min(minv,
(a[i]
.x-b[j]
.x)*
(a[i]
.x-b[j]
.x)+
(a[i]
.y-b[j]
.y)*
(a[i]
.y-b[j]
.y))
; cout<}}
解鎖 傳送門
linenoise c命令列處理工具 catch2 c 測試框架 quick start linenoise ng linenoise next generation c 命令列處理工具 yarn 快速 可靠 安全的node包依賴管理工具 pandoc pandoc安裝 使用 快速上手 autope...
JZOJ A組 傳送門
8102年,normalgod在glados的幫助下,研製出了傳送槍。但glados想把傳送槍據為己有,於是把normalgod扔進了一間實驗室。這間實驗室是一棵有n個節點的樹。現在normalgod在一號節點,出口也在一號節點,但為了開啟它,必須經過每乙個節點按下每個節點的開關,出口才能開啟。gl...
資料集傳送門
描述 flickr30k 多標籤定義影象 esp game 多標籤定義影象 iaprtc 12 多標籤定義影象 nus wide 視覺關係檢測 vrd 視覺關係檢測 svg 影象屬性檢測 visual genome dataset 關於rgbd 影象場景理解的資料庫 nyu depth v2 dat...