题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418

题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少,

题解:m<=1e5,n<16,说明有多边,需要处理一下,处理完用floyd跑一下,然后进行状态压缩dp。

 #include<cstdio>
#define F(i,a,b) for(int i=a;i<=b;i++)
inline void up(int &x,int y){if(x>y)x=y;} int dp[<<][],g[][],inf=<<,n,m,t,u,v,c,end,ans; int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m),end=(<<n)-,ans=inf;
F(i,,n)F(j,,n)g[i][j]=(i==j?:inf);
F(i,,m)scanf("%d%d%d",&u,&v,&c),up(g[u][v],c),up(g[v][u],c);
F(k,,n)F(i,,n)F(j,,n)up(g[i][j],g[i][k]+g[k][j]);//Floyd
F(i,,end)F(j,,n)dp[i][j]=inf;
dp[][]=;
F(i,,end)F(j,,n)if(dp[i][j]!=inf)F(k,,n)
if(k==j||i&<<k-)continue;
else up(dp[i|<<k-][k],dp[i][j]+g[j][k]);
F(i,,n)up(ans,dp[end][i]+g[i][]);
printf("%d\n",ans);
}
return ;
}

hdu_5418_Victor and World(状压DP+Floyd)的更多相关文章

  1. loj #6177. 「美团 CodeM 初赛 Round B」送外卖2 状压dp floyd

    LINK:#6177.美团 送外卖2 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合. 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 ...

  2. 【wikioi】2800 送外卖(状压dp+floyd)

    http://www.wikioi.com/problem/2800/ 本题状压莫名其妙的tle了,(按照hzwer大神打的喂,他1000多ms,我就2000ms了?) (14.8.7更,将getnu ...

  3. POJ 3311 Hie with the Pie(状压DP + Floyd)

    题目链接:http://poj.org/problem?id=3311 Description The Pizazz Pizzeria prides itself in delivering pizz ...

  4. poj3311 状压dp+floyd

    先floyd预处理一遍dis,枚举所有状态,dp[ i ] [ j ]表示 以  j  为终点的状态 i 使用最小的时间 #include<map> #include<set> ...

  5. 【鸽】poj3311 Hie with the Pie[状压DP+Floyd]

    题解网上一搜一大坨的,不用复述了吧. 只是觉得网上dp方程没多大问题,但是状态的表示含义模糊.不同于正常哈密顿路径求解,状态表示应当改一下. 首先定义一次移动为从一个点经过若干个点到达另一个点,则$f ...

  6. Hie with the Pie(POJ3311+floyd+状压dp+TSP问题dp解法)

    题目链接:http://poj.org/problem?id=3311 题目: 题意:n个城市,每两个城市间都存在距离,问你恰好经过所有城市一遍,最后回到起点(0)的最短距离. 思路:我们首先用flo ...

  7. 【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp

    题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻 ...

  8. poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp

    题目链接 题意 给定一个\(N\)个点的完全图(有向图),求从原点出发,经过所有点再回到原点的最短路径长度(可重复经过中途点). 思路 因为可多次经过同一个点,所以可用floyd先预处理出每两个点之间 ...

  9. codevs2800送外卖(floyd+状压dp)

    2800 送外卖  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond     题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东 ...

随机推荐

  1. Find and run the whalesay image

    Find and run the whalesay image People all over the world create Docker images. You can find these i ...

  2. 为什么yslow用不了

    因为yslow暂时不支持 Firefox 36以上版本.建议您可以使用它的书签版.访问这里 http://yslow.org/mobile/把页面最后的那个 Desktop Bookmarklet I ...

  3. 1.Perl 多线程:Threads

    详情可查看: perldoc threads 调用线程的方法: $thr = threads->create(FUNCTION, ARGS) #This will create a new th ...

  4. mongoDB3--mongoDB的基本操作。

    [MongoDb探究]03-mongodb基本操作语句 标签: mongodbdb.createCollectiondb.collectionName.indb.dropDatabasedb.coll ...

  5. 如何通过Maven的Tomcat插件运行Web工程

    去tomcat官网http://tomcat.apache.org/,左侧栏Apache Tomcat下的Maven Plugin,点进去选择最新版本Version 2.2 通过介绍可知,使用tomc ...

  6. 浅析PageRank算法

    很早就对Google的PageRank算法很感兴趣,但一直没有深究,只有个轮廓性的概念.前几天趁团队outing的机会,在动车上看了一些相关的资料(PS:在动车上看看书真是一种享受),趁热打铁,将所看 ...

  7. HOSTS文件修改后不起作用的原因

    如果是通过记事本修改,其实是没有问题的,如果有问题,网上搜到的是ipconfig /flushdns之类的 如果是批量程序写的,那就要小心了, 一定要ANSI(美标格式的,忘了英文是什么来着) 保存后 ...

  8. linux中将程序加入到开机自动启动

    如果将在linux中将命令或者程序设置为开机自动启动,只需要进入到将对应命令加入到/etc/rc.d/rc.local文件里即可,如下 打开文件,vi /etc/rc.d/rc.local #!/bi ...

  9. 2012-11-17 12:28 用MFC实现的计算器(详细版)

    这篇文章里通过计算器的简单实现,让大家能够了解一般对话框应用程序开发的基本流程 要求:编写简单的计算器应用程序,要求利用按钮进行加.减.乘,除操作,在对话框输出计算机结果. 下面结合操作步骤,讲解对话 ...

  10. JavaScript shift() 方法

    http://www.w3school.com.cn/jsref/jsref_shift.asp 定义和用法 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 语法 arr ...