貨員的難題(DFS)

2021-10-01 13:35:07 字數 1139 閱讀 5462

這題我在洛谷得了80分,此結果僅供參考

題目描述

某鄉有n個村莊(1if

(c[f[i]

.to]==0

)//下乙個點你能不能走

if(f[i]

.to==

1&&ans==n-1)

dfs(f[i]

.to,sum+f[i]

.s,ans+1)

;//下乙個點是起點,且其他村莊已走過 分開來

**

#include

using

namespace std;

int tot,n,a,c[45]

,head[

2005];

long

long m;

struct stu//結構體

f[2005];

void

add(

int x,

int y,

int s)

//鄰接表

void

dfs(

int now,

long

long sum,

int ans)

//有三個,now是當前村莊,sum是當前路程,ans是通過村莊個數

//如果通過n個村莊,就說明回到了起點

if(sum>=m)

return

;//剪枝,超過了最小值就跳過

for(

int i=head[now]

;i;i=f[i]

.next)

if(f[i]

.s+sum//要小於最小值

if(f[i]

.to==

1&&ans==n-1)

dfs(f[i]

.to,sum+f[i]

.s,ans+1)

;//下乙個點是起點,且其他村莊已走過

}return;}

intmain()

c[1]=

1;//起點為一

dfs(1,

0,0)

;//初值

cout<}

貨員的難題 DFS 鄰接表

time limit 10000ms memory limit 65536k total submit 297 accepted 161 case time limit 5000ms description 某鄉有 n 個村莊 1 n 40 1 n 40 1 n 4 0 有乙個售貨員,他要到各個村莊...

售貨員的難題

售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...

售貨員的難題

售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...