bfs+状态压缩求出所有的状态,然后由于第一个节点需要特殊处理,可以右移一位剔除掉,也可以特判。然后采用集合的操作,

#pragma comment(linker,"/STACK:1024000000,1024000000")
#include <cstdio>
#include <queue>
using namespace std;
#define inf 0x3f3f3f3f int n, m, cnt;
int head[17], next[17 * 17 * 2 + 3][3], dp[1 << 17][17], dis[1 << 17], num[1 << 17]; void add (int u, int v, int w)
{
next[cnt][1] = v;
next[cnt][2] = w;
next[cnt][0] = head[u];
head[u] = cnt++;
} void bfs ()
{
queue<pair<int, int> > q;
q.push(make_pair(0, 1));
dp[1][0] = 0;
while (!q.empty()){
pair<int, int> p = q.front();
q.pop();
int su = p.second;
int u = p.first;
for (int i = head[u]; i != -1; i = next[i][0]){
int v = next[i][1];
int w = next[i][2];
int sv = su|(1 << v);
if(dp[sv][v] > dp[su][u] + w){
dp[sv][v] = dp[su][u] + w;
q.push(make_pair(v, sv));
}
}
}
} int main ()
{
//freopen ("in.txt", "r", stdin);
int t, count = 0;
scanf ("%d", &t);
while (t--)
{
scanf ("%d %d", &n, &m);
int u, v, w;
for (int i = 0; i < n; ++i) head[i] = -1;
for (int i = (1 << n) - 1; i >= 0; --i){
dis[i] = inf;
num[i] = inf;
for (int j = 0; j < n; ++j) dp[i][j] = inf;
}
cnt = 0;
for (int i = 0; i < m; ++i){
scanf ("%d %d %d", &u, &v, &w);
add (u - 1, v - 1, w);
add (v - 1, u - 1, w);
}
scanf ("%d", &m);
v = 0;
for (int i = 0; i < m; ++i){
scanf ("%d", &u);
v |= (1 << (u - 1));
}
v >>= 1;
if (!m || (m == 1 && u == 1)){
printf("Case %d: 0\n", ++count);
continue;
}
bfs ();
u = inf;
w = (1 << (n-1)) - 1;
for(int i = 1; i < (1 << n); ++i)
for(int j = 0; j < n; ++j)
dis[i >> 1] = min(dis[i >> 1], dp[i][j]);
for (int i = 1; i <= w; ++i)
for (int j = i; j; j = (j - 1) & i)
num[i] = min(num[i], max(dis[j], dis[i ^ j]));
for (int i = 1; i <= w; ++i)
for(int j = i; j; j = (j - 1) & i)
if((i & v) == v) u = min(u, max(num[j], dis[i ^ j]));
if (u == inf) u = -1;
printf("Case %d: %d\n", ++count, u);
}
return 0;
}

hdu 4640 Island and study-sister的更多相关文章

  1. hdu 4640 Island and study-sister(状态压缩dp)

    先处理前两个学长到达各个点所需要的最少时间,在计算前两个学长和最后一个学长救出所有学妹的最少时间. #include<stdio.h> #include<string.h> # ...

  2. HDU 4280 Island Transport(网络流,最大流)

    HDU 4280 Island Transport(网络流,最大流) Description In the vast waters far far away, there are many islan ...

  3. hdu 4640(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...

  4. HDU 4280 Island Transport(网络流)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=4280">http://acm.hdu.edu.cn/showproblem.php ...

  5. HDU 4640 状态压缩DP 未写完

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 解题思路: 首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个 ...

  6. HDU 4280 Island Transport

    Island Transport Time Limit: 10000ms Memory Limit: 65536KB This problem will be judged on HDU. Origi ...

  7. Hdu 4280 Island Transport(最大流)

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  8. HDU 4280 Island Transport(无向图最大流)

    HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...

  9. HDU 4280 Island Transport(dinic+当前弧优化)

    Island Transport Description In the vast waters far far away, there are many islands. People are liv ...

随机推荐

  1. [React Testing] JSX error diffs -- expect-jsx library

    When writing React component tests, it can be hard to decipher the error diffs of broken tests, sinc ...

  2. [React Testing] Intro to Shallow Rendering

    In this lesson, we walk through how to use one of React's Test Utilities (from thereact-addons-test- ...

  3. Linux以KB显示内存大小

    Linux以KB显示内存大小 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -k total used free shared buffers ca ...

  4. 局域网指定 IP 地址后无法上网的问题

    子网掩码.默认网关.DNS 与局域网设置有关,建议指定前先 运行 cmd -> ipconfig /all 查看一下自动获取的信息. 另外留意指定IP 后需打开高级设置 -> WINS,勾 ...

  5. Keil IDE指南.

    Keil IDE指南(转载) 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的.但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的 ...

  6. django: urlconfig

    django 的 url 配置主要在 urls.py 中进行 urlconfig 中对 url 的处理方式主要在: 一 视图处理方式 如 上文 例子所示: url(r'^blog/index/$', ...

  7. DataSet与DataTable的区别

    DataSet:数据集.一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable DataTable:数据表. 一: SqlDataAdapter ...

  8. 轻松完成WAP手机网站搭建

    用PHPCMS最新发布的V9搭建了PHPCMS研究中心网站(http://phpcms.org.cn)完成后,有用户提出手机访问的问题,于是着手搭建WAP无线站(wap.phpcms.org.cn). ...

  9. 转载:对#!/bin/sh的认识

    转载网址:http://blog.163.com/hashes@yeah/blog/static/16867631220101029847420/ 对#!/bin/sh的认识 第一次学shell编程, ...

  10. ECSTORE验证码优化

    用ecstore的朋友应该知道,ecstore的验证码超级鸡肋. 特别是字母和数字混合,根本就看不懂写的是什么? 数字还好,但是字母就别提了.而且还小. 索性就把验证码换掉.研究一下发现,ecstor ...