#图论
Tuilot
退役ACMer
展开
-
最小割边与最小割点
最小割边 思路:将1到n的所有最短路都切断,求最小代价。先跑一遍迪杰斯特拉,然后再在最短路径上重新建图,就变成了在新图上将1到n的所有路径全部切断的最小代价,也就是最小割(边)。根据最大流最小割定理:最大流等于最小割,所以求最大流即可。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=200500; const ll inf=0x3f3f3f3f3f3f3f3f; #define fi原创 2020-07-15 13:14:29 · 712 阅读 · 0 评论 -
P2055 [ZJOI2009]假期的宿舍(匈牙利算法或者最大流)
题目链接 题意: 学校放假了,一部分学生回家一部分留校,然后有一些外校生来找他们的朋友玩。怎么安排住宿是个问题,他们所有人都有一个毛病只想睡朋友或者自己的床。问是否有一个合理的住宿方案? 看到这个很容易会想到二分图最大匹配,先将整个图分成两部分:人和床,求人和床的最大匹配。首先是本校生他才会有床,床的编号就是他的编号,然后对于每一个外校生找最大匹配。对于留校的本校生先让他睡他自己的床,还需要给他与他的床之间连一条边,刚开始想着留校生已经匹配好床了就没连结果wa了一个点,可能会存在留校生先把床让给了朋友,然后原创 2020-07-11 11:33:34 · 192 阅读 · 0 评论 -
P1129 [ZJOI2007]矩阵游戏 二分图最大匹配
https://www.luogu.com.cn/problem/P1129 n*n个格子的矩阵有黑白两色,问是否能经过有限次行交换和列交换使得主多角线上都是黑色(用1表示)。 主对角线上全是黑色,我们可以反着推,对于一个单位矩阵,任意次行交换列交换之后矩阵总是满足一个一个性质,每一行只与唯一的列交点为1,就是不存在任意两个点1的行数相等,也不存在列数相等。行交换列交换都是可逆的,所以如果矩阵满足...原创 2020-03-26 17:19:52 · 134 阅读 · 0 评论 -
最短路
n表示点的数量 m表示边的数量 朴素版迪杰斯特拉 O(n^2)适合稠密图(n ^2约等于m) 题目链接:https://www.acwing.com/problem/content/851/ 共有n个点 起点是1 剩余n-1个点的距离未知 所以只需循环n-1次就可以确定所有点到1的最短距离 n点的最短距离距一定出来了。每次循环从没有确定最短路的点集(标记为0)中找到最近的那个点 再用这个点去更新...原创 2020-02-03 13:42:59 · 111 阅读 · 0 评论