![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 78
meopass
即使摸爬滚打,满身泥泞,我也要前进
展开
-
codeforces 841D Leha and another game about graph
简略题意:n个点,m条边,每个点有3种度数状态。 1. 度数为奇数, 2.度数为偶数,3.无限制。 现在需要你选择一个边集使得满足限制条件。对于一个联通的图,所有点的度数和必然为偶数,但这题存在第3类点,因此判定无解的条件为:所有点的度数和为奇数,且不存在第3类点的时候无解。除此以外必然有解(一个3类点和某个1类点连接)。我们用dp[i]表示第i个点是否应该反转,则由其子节点的状态可以唯一确定该原创 2017-08-19 10:24:56 · 381 阅读 · 0 评论 -
codeforces gym 101142G Gangsters in Central City
简略题意:一棵树,每个节点有一个局面,根是水源,边是水管。初始每个居民都有水喝。 操作有两种: ‘+ v’, v处的居民楼被强盗占领。 ‘- v’, v处的强盗走了。 对于每个询问,你需要切断一些水管,使得所有强盗没水喝,没水喝的居民尽量少。因为必须有边切才行,所以需要切除的边数最多就是与原来的根相连的边的数目。 原来的树拆成了若干个子树,每个子树的根也有一个边可以切除。单独考虑每个子树的原创 2017-10-07 18:06:13 · 351 阅读 · 0 评论 -
HDU 6200 边双联通分量 + 并查集 + dfs序 + BIT
简略题意:初始给出一张无向图,两种操作: 1. 添加一条(u,v)(u, v)的无向边。 2. 问从uu到vv的路径上的割边有多少。假若不考虑添加边的操作,问有多少割边,我们只需要边双联通缩个点成树,树上的每个边都是割边。从而转化成树上两点间距离。从根dfs一下转化成有根树的问题。现在考虑添加边的过程,其实就是再缩点的过程,先不考虑如何缩点,假如缩了点之后,我们就需要动态更新两点间距离了。对此我原创 2017-10-07 18:33:21 · 314 阅读 · 0 评论 -
BZOJ1179 强连通缩点 + 最长路
题意:图片丢链接强连通分量内的所有点都可以来回跑,因此只需要在缩点之后的图上跑最长路即可。国庆第一题,1A开了个好头。#include<bits/stdc++.h>using namespace std;typedef long long LL;namespace solver { const int maxn = 550000; const int maxm = 1100000;原创 2017-10-01 00:08:32 · 237 阅读 · 0 评论 -
codeforces 864F 图论
题意:n个节点的有向图,无重边,无自环。 对于一条从s->t的路径,除了t其他城市都可以被游览多次。理想路径是一条路径从s到t的字典序最小路径。q次询问,每次给出一个si,tis_i, t_i。问从sis_i到tit_i的字典序最小的路径的第k个节点是什么。 可能不存在从sis_i到tit_i的字典序最小路径,当且仅当有以下两种情况。 1.1.没有从sis_i到tit_i的路径。 2.2.为原创 2017-10-01 18:27:01 · 322 阅读 · 0 评论 -
最小路径覆盖问题 及 相关公式定理
以下内容假定读者已经掌握了二分图匹配:定义 最小点覆盖:最小点覆盖是一个点集,用最少的点和所有边关联。 最小边覆盖:最小边覆盖是一个边集,对于图中所有的点,至少有一条边与其关联。 独立集:独立集是一个点集,任意两点都不存在边。对于二分图而言,令|V|为二分图中的点数,则存在如下定理: 1. 最大匹配数 + 最大独立集 = |V| 2. 最小点覆盖 = 最大匹配数 3. 最小边覆盖 = 最原创 2017-12-07 16:32:13 · 894 阅读 · 0 评论 -
sgu103 最短路
简略题意: 给出S和T,问从S到T的最短路。 但是两个节点能通行当且仅当两个节点的颜色相同。 每个节点有一个初始颜色,当前颜色剩余的时间,以及每种颜色的持续时长。需要注意的点:1. 双向边2. 无解(两种颜色无限交替)稍微修改一下最短路,每次从一个路口走到另一个路口时,需要附加上额外的时间代价,这个代价可以通过模拟得到。然后就是一个普通的最短路。#define ot...原创 2018-04-25 14:23:12 · 458 阅读 · 0 评论 -
sgu101 欧拉路
简略题意:给出n个多米诺骨牌,每个牌正面反面有不同的数字,一个牌iii能连在另一个牌jjj的后方当且仅当,iii的反面数字等于jjj的正面数字。可以把多米诺骨牌的看做边,两侧的数字看做节点,那么就可以转化成一个无向图欧拉路问题。 需要注意一下:1. 判定无解2. 判定图是否连通#define others#ifdef poj#include <iostream>#...原创 2018-04-26 15:02:32 · 186 阅读 · 0 评论 -
BZOJ 5335 智力竞赛
大致题意:给出一个DAG,问能否用n+1条可重复路径覆盖整个图。最小有重复路径覆盖问题,先传递闭包,转化成无重复路径覆盖问题。然后把原图每个点拆成两个点建立二分图,然后用原图点数−-−最大匹配数就是答案。如果可以覆盖就输出AKAKAK,否则二分一个最大可行权值midmidmid,大于midmidmid的点连一个i−&gt;ii -&gt; ii−>i的边,表示忽略这个点...原创 2018-09-30 10:06:10 · 291 阅读 · 0 评论