摘要: 1. 单向边 + 新图建边 int belong[N], dfn[N], low[N], now_time, scc_cnt; stack<int> s; void dfs(int u){ dfn[u] = low[u] = ++now_time; s.push(u); for(int i = he 阅读全文
posted @ 2018-12-10 16:47 Schenker 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题解:强连通锁点之后。 就成了一副单向图。 然后对于每个点 找到 后面合法的点的最大值就好了。 合法就是后面的那个点可以走到n号点。 也可以正向跑一遍dij 求出到这个点的最小花费。 然后在反向跑dij跑出n到这个点的最大花费,然后枚举每个点。 代码: #include<bits/std 阅读全文
posted @ 2018-12-10 16:43 Schenker 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:有n个点, p条路,每条道路有个花费Li, 然后现在要建一条1-n的路线,然后可以选k条道路免费, 然后可以在剩下的道路中选择价格最高的边支付费用, 求这个答案最小。 题解: 二分答案。 每次check过程中, 一条边的花费 <= mid 则 路径长度为0,否者路径长度为1。然后 阅读全文
posted @ 2018-12-10 14:55 Schenker 阅读(121) 评论(0) 推荐(0) 编辑