Shopping(hdu 3768)
题意:给你一个无向图,求从0号点开始遍历所有的指定点再回到0号点的最短路径
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#define N 100010
#define ll long long
#define INF 10000000000000LL
using namespace std;
ll head[N],vis[N],dis[N],f[][],a[],b[],n,m,k,ans=INF;
struct node
{
ll v,pre,t;
};node e[N*];
ll read()
{
ll num=,flag=;char c=getchar();
while(c<''||c>''){if(c=='-')flag=-;c=getchar();}
while(c>=''&&c<=''){num=num*+c-'';c=getchar();}
return num*flag;
}
void add(ll i,ll x,ll y,ll z)
{
e[i].v=y;
e[i].t=z;
e[i].pre=head[x];
head[x]=i;
}
ll spfa(ll s,ll t)
{
for(ll i=;i<=n;i++)dis[i]=INF;
memset(vis,,sizeof(vis));
queue<int> q;
q.push(s);vis[s]=;dis[s]=;
while(!q.empty())
{
ll u=q.front();vis[u]=;q.pop();
for(ll i=head[u];i;i=e[i].pre)
if(dis[e[i].v]>dis[u]+e[i].t)
{
dis[e[i].v]=dis[u]+e[i].t;
if(!vis[e[i].v])
{
vis[e[i].v]=;
q.push(e[i].v);
}
}
}
return dis[t];
}
void work()
{
n=read();m=read();
for(ll i=;i<=m;i++)
{
ll x=read()+,y=read()+,z=read();
add(i*-,x,y,z);add(i*,y,x,z);
}
k=read();a[]=;
for(ll i=;i<=k+;i++)
a[i]=read()+;
for(ll i=;i<=k+;i++)
for(ll j=i+;j<=k+;j++)
f[i][j]=f[j][i]=spfa(a[i],a[j]);
for(ll i=;i<=k+;i++)b[i]=i;
do
{
ll p=f[b[]][b[k+]];
for(ll i=;i<=k+;i++)
p+=f[b[i-]][b[i]];
ans=min(ans,p);
}while(next_permutation(b+,b+k+));
cout<<ans<<endl;
}
int main()
{
freopen("jh.in","r",stdin);
ll T=read();
while(T--)
{
memset(head,,sizeof(head));
memset(f,,sizeof(f));
memset(a,,sizeof(a));
memset(b,,sizeof(b));
memset(e,,sizeof(e));
ans=INF;
work();
}
return ;
}
Shopping(hdu 3768)的更多相关文章
- 2道acm编程题(2014):1.编写一个浏览器输入输出(hdu acm1088);2.encoding(hdu1020)
//1088(参考博客:http://blog.csdn.net/libin56842/article/details/8950688)//1.编写一个浏览器输入输出(hdu acm1088)://思 ...
- Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b ...
- 2013 多校联合 F Magic Ball Game (hdu 4605)
http://acm.hdu.edu.cn/showproblem.php?pid=4605 Magic Ball Game Time Limit: 10000/5000 MS (Java/Other ...
- (多线程dp)Matrix (hdu 2686)
http://acm.hdu.edu.cn/showproblem.php?pid=2686 Problem Description Yifenfei very like play a num ...
- War Chess (hdu 3345)
http://acm.hdu.edu.cn/showproblem.php?pid=3345 Problem Description War chess is hh's favorite game:I ...
- 2012年长春网络赛(hdu命题)
为迎接9月14号hdu命题的长春网络赛 ACM弱校的弱菜,苦逼的在机房(感谢有你)呻吟几声: 1.对于本次网络赛,本校一共6名正式队员,训练靠的是完全的自主学习意识 2.对于网络赛的群殴模式,想竞争现 ...
- BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- BestCoder Round #68 (div.2) geometry(hdu 5605)
geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 2013多校联合2 I Warm up 2(hdu 4619)
Warm up 2 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
随机推荐
- POJ2253 Frogger
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34865 Accepted: 11192 Descrip ...
- sixsix团队“餐站”应用M2阶段发布报告
一.新功能 客户端 搜索功能 我们在M2中实现了对地点的搜索菜品,可以直接在主页页面中的输入框输入用户喜欢的菜品,系统将返回与对应关键字所对应的选择,更加高效直观的满足客户的口味. 菜品图片加载 我们 ...
- Request.InputStream 接收Post Data
今天 用 Request.Form /Request.Params 等怎么也获取不到客户发过来的Post 数据 后来试着用了 Request.InputStream 竟然可以 using (Syste ...
- 打印多边形的菱形(for的嵌套)
Console.WriteLine("请输入一个数字,会出现一个多边的菱形:"); int n = Convert.ToInt32(Console.ReadLine()); ; i ...
- iconv命令详解
功能] 对于给定文件把它的内容从一种编码转换成另一种编码. [描述] -f encoding :把字符从encoding编码开始转换. -t encoding :把字符转换到encoding编码. ...
- Bootstrap 新手学习笔记——布局组件
1.字形图标: <button type="button" class="btn btn-primary btn-lg" style="font ...
- myBatis 实现用户表增操作(复杂型)
增加 @Test public void addTest(){ String resource = "mybatis-config.xml"; SqlSession sqlSess ...
- Hbase can't get locations问题
2016-11-08 22:21:16,875 ERROR [main-SendThread(ht-lxfx-01:24002)] client.ZooKeeperSaslClient: An err ...
- du: fts_read 失败: 无法分配内存
今天在查看一个大的文件时突然报出一个du: fts_read 失败: 无法分配内存的错误. 用 ulimit -a 查看下 core file size (blocks, -c) 0 data seg ...
- 遇到个小问题,Java泛型真的是鸡肋吗?
今天遇到一个小问题,让我感觉Java的泛型(因为背负了历史的包袱导致的)有点鸡肋啊. 我们经常会遇到要一些自定义的key-value字符串,比如: "key1:1k;key2:2;key3: ...