YBTOJ 電路維修

2021-10-16 22:12:57 字數 1244 閱讀 1775

思路:

乍一看這題,沒有bfs的頭緒

但是,我們想到了spfa

我們可以把地圖中的每個點看成方格,這樣就有(n+1)*(m+1)個方格

如果兩點之間有線聯通,那它們之間的邊權就是0,否則就為1

然後spfa就可以了

#include

#include

#include

using

namespace std;

int t, js;

int n, m, ans=

1000100

;char a[

501]

[501];

int d[

501]

[501];

int f[

1000010][

4];int dx[4]

=;int dy[4]

=;bool

check

(int x,

int y)

void

bfs(

)for

(int i=

0; i<

4; i++)if

(i==

1&&d[x1]

[y1]

>f[hd][3

]+(a[xx]

[yy+1]

=='\\'))

if(i==

2&&d[x1]

[y1]

>f[hd][3

]+(a[xx+1]

[yy+1]

=='/'))

if(i==

3&&d[x1]

[y1]

>f[hd][3

]+(a[xx]

[yy]

=='/'))

}}}int

main()

bfs();

if(ans==

1000100

)printf

("no solution\n");

else

printf

("%d\n"

, ans)

; js=0;

ans=

1000100;}

return0;

}

175 電路維修 bfs

達達是來自異世界的魔女,她在漫無目的地四處漂流的時候,遇到了善良的少女翰翰,從而被收留在地球上。翰翰的家裡有一輛飛行車。有一天飛行車的電路板突然出現了故障,導致無法啟動。電路板的整體結構是乙個r行c列的網格 r,c 500 如下圖所示。電路.png 每個格點都是電線的接點,每個格仔都包含乙個電子元件...

電路維修 CH2601

ch2601 建邊賊煩,轉化一下就好了。我這裡是將二維圖壓成了一維來存,因為輸入是邊,所以點要自己弄出來,矩形也要 n 1 m 1 的,之後用雙端佇列來優化一下 不用應該也行 include include include include include include using namespac...

P2243 電路維修

看了眼題解,貌似沒有和我的思路一樣的 所以就來寫一篇題解 首先我不會什麼雙向bfs也懶得寫最短路 所以,就乙個bfs 闖遍天下 先看題 感性理解一下 貌似如 1,2 2,1 1,4 4,1 都到不了 雖然這個麼什麼用 好了,進入主題 首先,bfs是乙個佇列,為了保證結果的真確性,所以存當前花費的陣列...