題意:有多少條,一定被包含在最大匹配裡面
sol.
60分,斷掉每一條邊,看是否任然滿流,若不滿流,則必須出現在最大匹配裡面
考慮滿分做法
直接如果一條邊,在殘餘網路的乙個強連通分量裡面,是可以不選的
就做完了
#include#define maxn 10005
#define maxm 200005
#define inf 0x3f3f3f3f
using namespace std;
int n,m;
int color[maxn],vis[maxn],s,t;
vectorg[maxn];
int h[maxn],tot,g1[maxm],g2[maxm];
int le,ans_yl;
pairt[maxn];
struct nodee[maxm << 1];
void add(int x , int y , int z)
bool cmp(paira , pairb)
int dis[maxn];
queueq;
bool bfs()
} return (dis[t] < inf);
}int dfs(int now , int low)
} return low - used;
}int dinic()
return zz;
}int init(int dx)
for(int i = 1 ; i <= n ; i++)
return dinic(); }
void ycl(int now , int fa)
}int low[maxn],dfn[maxn],dex,belong[maxn],js;
stackq2;
void tarjan(int now , int fa)
else if(!belong[e[i].to])low[now] = min(low[now] , dfn[e[i].to]);
} if(dfn[now] == low[now])while(u != now); }}
int main()
for(int i = 0 ; i <= tot ; i = i + 2)
sort(t + 1 , t + 1 + le , cmp);
cout
}
LG P3181 HAOI2016 找相同字元
給定兩個字串,求出在兩個字串中各取出乙個子串使得這兩個子串相同的方案數。兩個方案不同當且僅當這兩個子串中有乙個位置不同。題中所求即為a串與b串任意一組height之和,所以暴力可以做到 o n 2 考慮將答案掛在這兩組字尾中sa值較大的那個上,即每個字尾只考慮出現在它前的所有字尾貢獻的答案 由於lc...
HAOI2017 新型城市化
題目 發現題目給了一張補圖,求的是最大團 而且隱隱約約告訴我們這張補圖是乙個二分圖 於是非常自然聯想到最大團等於補圖最大獨立集 最大獨立集又等於總點數 最小點覆蓋 最小點覆蓋 最大匹配 使得最大團增加就需要使得最大匹配減小 於是我們終於讀懂題目了,就是求二分圖匹配的必須邊 直接在殘量網路裡跑 tar...
HAOI2017 八縱八橫
題目傳送門 分析 乙個熟練的oi選手 錯亂 會發現詢問其實就是在圖上找一些環使得異或和最大 感性分析 鏈結這些環的路徑會因為被經過了偶數次而異或起來被抵消掉 考慮求圖上的一顆生成樹,因為原圖上的高速路不會被取消,圖一定連通 否則可以用lct維護 有乙個結論 圖上任意乙個環都可以用若干個生成樹上一條路...