1086 - Jogging Trails (欧拉回路+dp)

好长时间没有做dp了 ,做个dp题 ,感觉跟模拟差不多,,这是在倒退啊。。


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define DB double

using namespace std;
const int N = 16;
const int M = 17009;
const int INF = 0x3f3f3f3f;
int n,m;
int dp[M];
int dis[N][N];
int eg[N];
void floyd()
{
    for(int i=0;idis[j][i]+dis[i][k])
    dis[j][k] = dis[k][j] = dis[j][i]+dis[i][k];
}
int tdis[N][N];
int solve()
{
    int c[N],t=0;
    memset(dp,INF,sizeof(dp));
    dp[0] = 0;
    for(int i=0;ic) dis[a][b]=dis[b][a] = c;
            eg[a]++;eg[b]++;
            ans +=c;
        }
        floyd();
        ans+=solve();
        printf("Case %d: %d\n",T++,ans);
    }
    return 0;
}


你可能感兴趣的:(动态规划)