我到底怎么建的图为啥要开这么大的数组啊?! 神题神题,本来以为图论出不出什么花来了. 首先要理解'团'的概念,简单来说就是无向图的一个完全子图,相关概念详见度娘. 所以关于团一般都是NP问题,只有二分图例外.而题目中有这样一句话"n座城市可以恰好被划分为不超过两个城市群",并且给出的是没有的边,也就是这个图的补图,两个团就很显然表示这个补图是个二分图(我一开始还考虑1个团咋整后来发现根本不用整= =),模型就变成了二分图的最大独立集,考虑最大独立集=n-最大匹配,那么只要求出删掉哪些边…
洛谷 题意: 给出两个最大团的补图,现在要求增加一条边,使得最大最大团个数增加至少\(1\). 思路: 我们求出团的补图,问题可以转换为:对于一个二分图,选择删掉一条边,能够增大其最大独立集的点集数. 然后做法就是考虑在最大流的残余网络上,对容量为\(1\)的边求强连通分量(包含源点.汇点). 若存在一条边\((x,y)\)为匹配边,并且\(x,y\)在不同的强连通分量中,那么\((x,y)\)这条边为必经边,即最大匹配中包含这条边:若\((x,y)\)为非匹配边并且\(x,y\)在同一强连通分…
传送门 一个基础的二分图匹配(虽然今天才学会) 因为不会匈牙利算法只好用网络流做 先新建一个超级源和超级汇,源往所有左边的点连边,所有右边的点往汇连边 然后跑一边最大流就好了 顺便记录一下匹配到谁就好了 //minamoto #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define inf 0x3f3f3f3f…
题目显然可以转化为求每一条边对二分图最大独立集的贡献,二分图最大独立集\(=\)点数\(-\)最大匹配数,我们就有了\(50pts\)做法. 正解的做法是在原图上跑\(Tarjan\),最开始我想复杂了,后来才意识到,只要存在这样一个强连通分量,那么断掉分量内的任意一条边都不会破坏其连通性,即不管删掉哪个连边都一定会有新的匹配补充.只要让两个点不在同一个分量里面,而且原来是满流的(匹配可行边),那么它就是一个可用边(匹配必须边). #include <bits/stdc++.h> using…
题意 题目链接 给出一个带权有向图,选出n + 1n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 Sol TJOI怎么净出板子题 二分答案之后直接二分图匹配check一下. 多读读题就会发现题目要求的就是可相交的最小路径覆盖,那么按照套路先floyd一遍,如果能联通的话就再二分图中加边,然后判一下最大匹配数就行了.刚开始以为因为有的点可以不选,要在匈牙利的时候进行玄学贪心,其实是不用的,因为我们已经求过传递闭包了.所以直接求就是对的 因为\(M \leqslant 50…
题目链接 看到题目肯定首先会想到搜索. 然鹅数据范围\(n<=200\)这么大(其实也不算太大),肯定是不行的. 如果\((i,j)\)是\(1\),从\(i\)向\(j\)连一条边,表示第\(j\)列可以交换第\(i\)列得到,然后跑一遍匈牙利就行了(Dinic我不会啊). #include <cstdio> #include <cstring> #include <algorithm> #define Open(s) freopen(s".in&qu…
题目背景 Grant喜欢带着他的小狗Pandog散步.Grant以一定的速度沿着固定路线走,该路线可能自交.Pandog喜欢游览沿途的景点,不过会在给定的N个点和主人相遇.小狗和主人同时从(X1,Y1)点出发,并同时在(Xn,Yn)点汇合.小狗的速度最快是Grant的两倍.当主人从一个点以直线走向另一个点时,Pandog跑向一个它感兴趣的景点.Pandog每次与主人相遇之前最多只去一个景点. 题目描述 你现在的任务是:为Pandog寻找一条路线(有可能与主人的路线部分相同),使它能够游览最多的景…
题目:https://www.luogu.org/problemnew/show/P2055 二分图匹配: 注意要连边的话对方必须有床! 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ],ct,pre[]; ],hm[],vis[]; struct N{ int to,nxt; N(,):to(t),nx…
传送门 题意: 现有一个\(0\)到\(n-1\)的排列\(T\),定义距离\(D(x,y)=min\{|x-y|,N-|x-y|\}\). 现在给出\(D(i, T_i)\),输出字典序最小的符合条件的排列\(T\). 思路: 将问题转化为二分图匹配,左边的点表示位置,右边的点表示值. 那么现在就是要找一个使得最终字典序最小的排列. 从后往前逐一匹配即可. 主要考察对匈牙利算法的理解程度,前面位置小的肯定选择小的最后,但如果一开始给匹配了,后面的来进行匹配会直接强行插入,可能会使得答案不优.…
[Luogu3731][HAOI2017]新型城市化(网络流,Tarjan) 题面 洛谷 给定一张反图,保证原图能分成不超过两个团,问有多少种加上一条边的方法,使得最大团的个数至少加上\(1\). 题解 本来并不会做的,看题解第一句话就会了QwQ 对于在反图上没有边的点之间是存在一条边的. 那么考虑原图的一个团对应在反图上是什么,因为原图的团内的点两两之间有边,所以对应在反图上两两之间无边.所以原图的一个团对应着反图的一个独立集. 因为原图可以分解为不超过\(2\)个团,所以反图可以分解成一个二…