10273번 - 고대 동굴 탐사
dfs와 메모이제이션을 이용한 방식으로는 풀렸는데
똑같은 식을 사용한 dp로는 풀리지 않네요
어디가 잘못됐나요?
아래는 성공한 코드의 dfs 부분입니다.
int dfs(int now){ int &res=dap[now]; if(res!=-1) return res; int i,a; res=0; a=v[now].size(); for(i=0;i<a;i++) { if(res<dfs(v[now][i].first)-v[now][i].second) { res=dfs(v[now][i].first)-v[now][i].second; pass[now]=v[now][i].first; } } res+=value[now]; return res;}
댓글을 작성하려면 로그인해야 합니다.
wxogus25 8년 전
dfs와 메모이제이션을 이용한 방식으로는 풀렸는데
똑같은 식을 사용한 dp로는 풀리지 않네요
어디가 잘못됐나요?
아래는 성공한 코드의 dfs 부분입니다.
int dfs(int now)
{
int &res=dap[now];
if(res!=-1)
return res;
int i,a;
res=0;
a=v[now].size();
for(i=0;i<a;i++)
{
if(res<dfs(v[now][i].first)-v[now][i].second)
{
res=dfs(v[now][i].first)-v[now][i].second;
pass[now]=v[now][i].first;
}
}
res+=value[now];
return res;
}