思路:乍一看這題,沒有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是乙個佇列,為了保證結果的真確性,所以存當前花費的陣列...