<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.cvbbacm.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.cvbbacm.com/feed.php">
        <title>CVBB ACM Team 2020-2021:teams:alchemist:maxdumbledore:graph</title>
        <description></description>
        <link>https://wiki.cvbbacm.com/</link>
        <image rdf:resource="https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico" />
       <dc:date>2026-04-30T02:14:52+0800</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:alchemist:maxdumbledore:graph:blossom_algorithm&amp;rev=1594784737&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico">
        <title>CVBB ACM Team</title>
        <link>https://wiki.cvbbacm.com/</link>
        <url>https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:alchemist:maxdumbledore:graph:blossom_algorithm&amp;rev=1594784737&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-15T11:45:37+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2020-2021:teams:alchemist:maxdumbledore:graph:blossom_algorithm</title>
        <link>https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:alchemist:maxdumbledore:graph:blossom_algorithm&amp;rev=1594784737&amp;do=diff</link>
        <description>带花树算法

带花树算法是为了解决一般图的匹配问题的，注意这种问题是网络流构图无法可解的。

效率为$O(|V|^2|E|)$，实际表现会好得多。

下面为牛客2020多校一的I题代码，精彩的构图+带花树。


#include &lt;bits/stdc++.h&gt;

using namespace std;
const int maxn = 500;
struct struct_edge {
    int v;
    struct_edge *n;
};
typedef struct_edge *edge;
struct_edge pool[maxn * maxn * 2];
edge top = pool, adj[maxn];
int V, match[maxn], qh, qt, q[maxn], father[maxn], base[maxn];
bool inq[maxn], inb[maxn], ed[maxn][maxn];

void addEdge(int u, int v) {
    --u, --v;
    if (!ed[u][v]) {
        e…</description>
    </item>
</rdf:RDF>
