這題我在洛谷得了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村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...