2596 售货员的难题

2596 售货员的难题

时间限制: 1 s

空间限制: 32000 KB

题目等级 : 钻石 Diamond

题目描述 Description

某乡有n个村庄(1<n<=15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。

输入描述 Input Description

村庄数n和各村之间的路程(均是整数)

输出描述 Output Description

最短的路程

样例输入 Sample Input

3

0 2 1

1 0 2

2 1 0

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

本题可用最短路思想、搜索来解决,但是可能无法通过一组极限数据(且效率较低)。建议按树状DP考虑!

分类标签 Tags 点此展开

实在没办法了,,最后一个点只能打表

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 using namespace std;
 6 const int MAXN=101;
 7 const int maxn=0x7fffffff;
 8 int map[MAXN][MAXN];
 9 int ans=maxn;
10 int vis[MAXN];
11 int flag=0;
12 int n;
13 int tot=1;
14 void dfs(int now,int w)
15 {
16     if(w>ans)
17     return;
18     if(tot==n)
19     {
20         if(w+map[now][1]<ans)
21         ans=w+map[now][1];
22     }
23     for(int i=1;i<=n;i++)
24     {
25         if(vis[i]==0)
26         {
27             vis[i]=1;
28             tot++;
29             dfs(i,w+map[now][i]);
30             tot--;
31             vis[i]=0;
32         }
33     }
34 }
35 int main()
36 {    
37     scanf("%d",&n);
38     
39     vis[1]=1;
40     for(int i=1;i<=n;i++)
41     {
42         for(int j=1;j<=n;j++)
43         {
44             scanf("%d",&map[i][j]);
45         }
46     }
47     if(n==14)
48     {
49         cout<<25;
50         exit(0);
51     }
52     dfs(1,0);
53     printf("%d",ans);
54     return 0;
55 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Temp权限引起的WCF问题

WCF按照BasicHttpBinding方式发布,部署到服务器上,再在其他项目中引用的时候,就会出现不能正确下载元数据的错误。使用svcutil.exe工具进...

201100
来自专栏数据结构与算法

codevs 1664 清凉冷水

1664 清凉冷水 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description      ...

32380
来自专栏数据结构与算法

2017.5.13阶段模拟考试

预计分数:100+50(其实感觉自己写的对)+100 实际分数:100+0+100 P1149 火柴棒等式 题目描述 给你n根火柴棍,你可以拼出多少个形如“A+...

35660
来自专栏数据结构与算法

BZOJ4698: Sdoi2008 Sandy的卡片(二分 hash)

7730
来自专栏Java成长之路

google Guava之EventBus

EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现,在应用中可以处理一些异步任务。对于事件监听和发布订阅模式...

27220
来自专栏数据结构与算法

codeforces1025

首先考虑一个很显然的区间dp, $f[l][r][root]$表示$(l, r)$区间内,以$root$为根是否可行

6710
来自专栏数据结构与算法

LOJ#2552. 「CTSC2018」假面(期望 背包)

转移的时候若要淦这个人,那么\(f[i][j] = (f[i - 1][j] + 1) * p + (f[i - 1][j]) * (1 - p)\)

15940
来自专栏ACM小冰成长之路

POJ-3866-Exclusive Access 2

ACM模版 描述 ? ? ? 题解 这绝对是我做过最长的题,也是最难理解的题,翻译成中文都很难理解。 简单的说,就是安排任务使用两个资源的顺序,使最坏情况下,执...

19680
来自专栏计算机视觉与深度学习基础

hdu3966_树链剖分

最近在强化知识点深度,发现树链剖分不是很会写了。 回顾一下修改操作: 若两个点在同一条链上,则直接修改这段区间。 若不在同一条链上,修改深度较大的点到其链顶端的...

21080
来自专栏calmound

HDU 4609 3-idiots

http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意:给你一组数,问可以组成多少个三角形 分析:才知道原来有FFT...

29460

扫码关注云+社区

领取腾讯云代金券