这题一看显然是一个裸的斯坦纳树

我们用$f[i][j]$表示经过的路径中包含了状态$i$所表示的点,且连接了$j$号点的最短路径。

显然,$f[i][j]=min\{f[i$^$k][j]+f[k][j]\}$, 其中$i $&$ k = k$。

转移完毕后,跑一个最短路去更新一遍。

那么显然这题的时间复杂度是$O(2^k\times 最短路时间复杂度)$。

但是这题神TM卡SPFA。。。。

我后来改写了$dij$,再加了个避免重复更新的判断,才过了...

 #include<bits/stdc++.h>
#define M 100005
#define L long long
#define INF 1926081719260817LL
using namespace std;
struct edge{int u,v,next;}e[M<<]={}; int head[M]={},use=;
void add(int x,int y,int z){use++;e[use].u=y;e[use].v=z;e[use].next=head[x];head[x]=use;}
L f[<<][M]={};
struct node{
int u; L dis; node(){u=dis=;}
node(int uu,L diss){u=uu; dis=diss;}
friend bool operator <(node a,node b){return a.dis>b.dis;}
}; priority_queue<node> q;
bool vis[M]={};
void spfa(L dfn[]){
memset(vis,,sizeof(vis));
while(!q.empty()){
node uu=q.top(); q.pop();
int u=uu.u;
if(vis[u]) continue; vis[u]=;
for(int i=head[u];i;i=e[i].next)
if(dfn[e[i].u]>dfn[u]+e[i].v){
dfn[e[i].u]=dfn[u]+e[i].v;
q.push(node(e[i].u,dfn[e[i].u]));
}
}
}
int n,m,k,p[]={}; int main(){
scanf("%d%d%d",&n,&k,&m);
for(int i=;i<(<<k);i++)
for(int j=;j<=n;j++) f[i][j]=INF;
for(int i=;i<k;i++){
scanf("%d",p+i);
f[<<i][p[i]]=;
}
for(int i=;i<=m;i++){
int x,y,z; scanf("%d%d%d",&x,&y,&z);
add(x,y,z); add(y,x,z);
}
for(int i=;i<(<<k);i++){
for(int j=i;j;j=i&(j-)){
for(int k=;k<=n;k++)
f[i][k]=min(f[i][k],f[j][k]+f[i^j][k]);
}
for(int k=;k<=n;k++)
if(f[i][k]!=INF) q.push(node(k,f[i][k]));
spfa(f[i]);
}
L minn=INF;
for(int i=;i<=n;i++)
minn=min(minn,f[(<<k)-][i]);
cout<<minn<<endl;
}

最新文章

  1. Windows集成认证全过程
  2. 【转】HTML网页中插入视频各种方法
  3. AngularJS拦截器
  4. HTML 调用iscroll.js主要事项
  5. Core Java Volume I — 4.4. Static Fields and Methods
  6. 任我行 CRM 9.4
  7. 从千分位格式化谈JS性能优化
  8. solr热身
  9. 浅谈C语言指针
  10. Python之mysql数据库更新表数据接口实现
  11. MySQL数据库学习三 数据库对象和基本操作
  12. springMVC源码分析--容器初始化(一)ContextLoaderListener
  13. css学习_cs3s旋转的图片
  14. php -- 断点调试 之 选择合适的xdebug
  15. CentOS安装Memcached
  16. django分页功能
  17. 查看Andorid应用是32位还是64位
  18. 爬虫初窥day1:urllib
  19. bootstrap4
  20. depmod -a

热门文章

  1. 【Linux】SVN的安装和配置
  2. Linux服务器部署系列之八—Sendmail篇
  3. org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;testService&#39; is defined
  4. Cadence丢失了csdCommon.dll
  5. wadl 的自动生成(cxf版本2.7.6)
  6. 配置HDFS HttpFS和WebHDFS
  7. SharpMap源代码解析
  8. Codeforces805 C. Find Amir 2017-05-05 08:41 140人阅读 评论(0) 收藏
  9. PAT甲 1048. Find Coins (25) 2016-09-09 23:15 29人阅读 评论(0) 收藏
  10. [转载]HTML5游戏前端开发秘籍