孤島營救與汽車加油行駛問題

2022-05-01 03:54:07 字數 2850 閱讀 6146

兩道分層圖,所以我放在一起了=-=

別人都是對狀態直接bfs了,我是對每個狀態編號、建圖,然後跑spfa。(感覺直接bfs好像會快一點,找時間學習一波qwq)

關於編號的注意事項就是不同點的編號一定不能重複,不然就會出現各種奇奇怪怪的錯誤。(血的教訓啊...)

孤島營救:

1 #include2 #include3 #include4 #include5 #include6

#define ll long long

7#define ri register int

8using

namespace

std;

9const

int inf = 0x7ffffff;10

const

int n = 10 + 2;11

const

int cc = 100 + 10;12

const

int m = 1e6 + 10;13

const

int nn = 1e6 + 10;14

15const

int cx = ;

16const

int cy = ;

1718 inline int

read()

26struct

edge e[m] ;

29int n, m, p, k, t ; int

head[nn], dis[nn] ;

30int noo[n][n][n][n] ; //

11表示牆,其他數字表示鑰匙

31 inline void add_edge(int x,int y,int

vv)

3536 inline void

spfa() 50}

51}52 inq[x] = 0;53

}54if(dis[t] == inf) printf("-1"

) ;55

else printf("%d"

,dis[t]) ;56}

5758

intmain() else noo[x1][y1][x2][y2] = noo[x2][y2][x1][y1] =ii ;66}

67for(int s=0;s<(1

<) 78}

79}80}

81int nn =read() ;

82for(int i=1;i<=nn;i++) 89}

90}91for(int s=0;s<(1

<0

) ;92

spfa() ;

93return0;

94 }

汽車加油行駛:

1 #include2 #include3 #include4 #include5 #include6

#define ll long long

7#define ri register int

8using

namespace

std;

9const

int inf = 0x7ffffff;10

const

int cc = 1e4 + 100;11

const

int n = 100 + 10;12

const

int nn = 1e6 + 10;13

const

int m = 1e6 + 10;14

15const

int cx1 = ;

16const

int cy1 = ;

17const

int cx2 = ;

18const

int cy2 = ;

1920 inline int

read()

28struct

edge e[m] ;

31int n, k, a, b, c, s, t ; int

head[nn], dis[nn] ;

32bool

hh[n][n] ;

33 inline void add_edge(int x,int y,int

vv)

3738 inline void

spfa() 52}

53}54 inq[x] = 0;55

}56 printf("%d"

,dis[t]) ;57}

5859

intmain()

74for(int kk=0;kk<2;kk++)

79 } else

85for(int kk=0;kk<2;kk++) 90}

91//

創造加油站 =-=

92for(int kk=0;kk<2;kk++)

97for(int kk=0;kk<2;kk++)

102}

103}

104}

105for(int i=1;i<=n;i++)

106for(int j=1;j<=n;j++)

113for(int kk=0;kk<2;kk++)

118 } else

124for(int kk=0;kk<2;kk++)

129}

130}

131for(int now=k;now>=0;now--) add_edge(now*cc+n*n,t,0) ; s = k*cc + 1

;132

spfa() ;

133return0;

134 }

汽車加油行駛問題

1.問題描述 給定乙個n n 的方形網格,設其左上角為起點,座標為 1,1 x 軸向右為正,y 軸 向下為正,每個方格邊長為1。一輛汽車從起點出發駛向右下角終點,其座標為 n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守 如下規則 1 汽車只能沿網格邊行駛,裝...

汽車加油行駛問題

給定乙個n n 的方形網格,設其左上角為起點 座標為 1,1 x 軸向右為正,y 軸向下為正,每個方格邊長為1,如圖所示。一輛汽車從起點 出發駛向右下角終點 其 座標為 n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在 行駛過程中應遵守如下規則 1 汽車只能沿網格邊行駛,裝滿...

c 汽車加油行駛問題

給定乙個 n n 的方形網格,設其左上角為起點 座標為 1,1 x 軸向右為正,y軸向下為正,每個方格邊長為1。一輛汽車從起點 出發駛向右下角終點 其座標為 n,n 在若干個網格交叉點處,設定了油庫,可供汽車在行駛途中加油。汽車在行駛過程中應遵守如下規則 1 汽車只能沿網格邊行駛,裝滿油後能行駛 k...