题目大意:有一张$n(n\leqslant100)$个点$m(m\leqslant n(n-1)$条边的有向图,每个点有一个颜色,需要找到一条长度为$k(k\leqslant13)$,恰好经过全部$k$种颜色的路径。求最短路径

题解:状压$DP$,令$f_{i,S}$表示现在在第$i$个点,颜色状态为$S$的最短路径,要求长度也为$k$,只需要在转移的时候判断一下即可

卡点:

C++ Code:

#include <cstdio>
#define maxn 111
#define maxm (maxn * maxn)
#define N (1 << 13)
const int inf = 0x3f3f3f3f;
inline void getmin(int &a, int b) { if (a > b) a = b; }; int head[maxn], cnt;
struct Edge {
int to, nxt, w;
} e[maxm];
inline void addedge(int a, int b, int c) {
e[++cnt] = (Edge) { b, head[a], c }; head[a] = cnt;
} int n, m, k, ans = inf;
int s[maxn], f[maxn][N];
int main() {
scanf("%d%d%d", &n, &m, &k);
__builtin_memset(f, 0x3f, sizeof f);
for (int i = 1; i <= n; ++i) {
scanf("%d", s + i);
f[i][1 << s[i]] = 0;
}
for (int i = 0, a, b, c; i < m; ++i) {
scanf("%d%d%d", &a, &b, &c);
addedge(a, b, c);
}
const int U = 1 << k, I = U - 1;
for (int j = 1; j < U; ++j) {
for (int u = 1; u <= n; ++u) if (f[u][j] != inf) {
for (int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to;
if (j >> s[v] & 1) continue;
getmin(f[v][j | 1 << s[v]], f[u][j] + e[i].w);
}
}
}
for (int i = 1; i <= n; ++i) getmin(ans, f[i][I]);
if (ans != inf) printf("%d\n", ans);
else puts("Ushio!");
return 0;
}

  

[洛谷P4962]朋也与光玉的更多相关文章

  1. P4962 朋也与光玉题解

    题目链接 光坂小镇是一个由 n 个点(编号为 1 ~ n),m 条有向边构成的图,每个节点上都有一个光玉,光玉共有 k 种,编号为 0 ~ k−1. 为了使一切改变,朋也需要找齐全部的 k种光玉.他可 ...

  2. [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)

    [BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...

  3. 洛谷 P5638 光骓者的荣耀

    洛谷 P5638 [CSGRound2]光骓者的荣耀 洛谷传送门 题目背景 小 K 又在做白日梦了.他进入到他的幻想中,发现他打下了一片江山. 题目描述 小 K 打下的江山一共有nn个城市,城市ii和 ...

  4. 【洛谷P1352】没有上司的舞会

    [洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...

  5. 洛谷 P2835 刻录光盘

    题目链接 https://www.luogu.org/problemnew/show/P2835 题目描述 在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘 ...

  6. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)

    洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...

  7. 洛谷P2668 斗地主==codevs 4610 斗地主[NOIP 2015 day1 T3]

    P2668 斗地主 326通过 2.6K提交 题目提供者洛谷OnlineJudge 标签搜索/枚举NOIp提高组2015 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 出现未知错误是说梗啊 ...

  8. 洛谷 P1169 [ZJOI2007]棋盘制作 (悬线法)

    和玉蟾宫很像,条件改成不相等就行了. 悬线法题目 洛谷 P1169  p4147  p2701  p1387 #include<cstdio> #include<algorithm& ...

  9. 洛谷 P1789 【Mc生存】插火把 题解

    P1789 [Mc生存]插火把 题目背景 初一党应该都知道...... 题目描述 话说有一天 linyorson 在"我的世界"开了一个 \(n\times n(n\le 100) ...

随机推荐

  1. Asp.net Web Api开发Help Page 添加对数据模型生成注释的配置和扩展

    在使用webapi框架进行接口开发的时候,编写文档会需要与接口同步更新,如果采用手动式的更新的话效率会非常低.webapi框架下提供了一种自动生成文档的help Page页的功能. 但是原始版本的效果 ...

  2. PostgreSQL 使用总结

    1. USING的使用 USING是个缩写的概念:它接收一个用逗号分隔的字段名字列表, 这些字段必须是连接表共有的,最终形成一个连接条件,表示这些字段对必须相同. USING (a, b, c) 等效 ...

  3. C#新特性记录

    C#6.0新特性笔记 Getter专属赋值 可以在构造函数中,给只有get的属性赋初始值. class Point { public int x { get; } public Point() { x ...

  4. Linux命令应用大词典-第17章 软件包管理

    17.1 rpm:RPM软件包管理器 17.2 rpmargs:处理RPM软件包 17.3 rpmbuild:构建RPM软件包 17.4 rpmdiff:比较两个软件包之间的不同 17.5 rpmel ...

  5. C++11 type_traits 之is_same源码分析

    请看源码: template<typename _Tp, _Tp __v> struct integral_constant { static const _Tp value = __v; ...

  6. spark-submit配置说明

    <Spark 官方文档>Spark配置 spark-1.6.0 原文地址 Spark配置 Spark有以下三种方式修改配置: Spark properties (Spark属性)可以控制绝 ...

  7. Paper Reading - Learning like a Child: Fast Novel Visual Concept Learning from Sentence Descriptions of Images ( ICCV 2015 )

    Link of the Paper: https://arxiv.org/pdf/1504.06692.pdf Innovations: The authors propose the Novel V ...

  8. 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第一道——最佳路径

    题目 给定一个 n*m 的矩阵 A ,矩阵中每一个元素为一个十六进制数.寻找一条从左上角都右下角的路径,每次只能向右或者向下移动, 使得路径上所有数字之积在 16 进制下的后缀 0 最少. 输入描述: ...

  9. ptrdiff_t类型

    一.特性 1. 这是一种标准库类型 2. 是两个指针相减的结果的类型(因为差值可能为负值,所以是一种带符号类型) 3. 和size_t一样,ptrdiff_t也是一种定义在<cstddef> ...

  10. Java学习个人备忘录之面向对象概念

    对象,其实就是该类事物实实在在存在的个体. 类与对象之间的关系?类:一类事物的描述.对象:该类事物的实例.在java中通过new来创建的.举例来说,类就是汽车说明书,类只能在理论上造一辆汽车,并且这个 ...