摘要: 给你一个无向图, 让你判断这是不是一个二分图。 二分图的标准:可以把这个图的点分成两堆,试每条边都连接这两个堆里的点,而一个堆里的点不能相连。 无向图G为二分图的充分必要条件是,G至少有两个顶点, 且其所有回路的长度均为偶数。(???什么意思???) 语文不好,看图吧。 就这个意思。 而现在然你自己 阅读全文
posted @ 2017-04-12 19:56 zht467 阅读(278) 评论(2) 推荐(2)
摘要: 题目链接 题目大意是说输入数字n 然后告诉你第i个人都认识谁? 让你把这些人分成两堆,使这每个堆里的人都互相认识。 做法:把不是互相认识的人建立一条边,则构建二分图,两堆的人肯定都互相认识,也就是说,互相认识的两个人肯定不相连。 ——代码 1 #include <cstdio> 2 #include 阅读全文
posted @ 2017-04-12 19:20 zht467 阅读(259) 评论(0) 推荐(1)
摘要: 洛谷模板题 学了匈牙利算法。 匈牙利算法核心是找增广路经。 可以求出二分图的最大匹配数。 感觉还是挺好理解的。 时间复杂度 邻接矩阵: 邻接表: 空间复杂度 邻接矩阵: 邻接表: 看的这个blog,有些恶趣味。(受不了凤姐那张图。。) ——代码 1 #include <cstdio> 2 #incl 阅读全文
posted @ 2017-04-11 11:17 zht467 阅读(176) 评论(0) 推荐(2)
摘要: 为了将最小费用最大流的spfa优化,决定将spfa换成heap优化的Dijkstra。(dijkstra不能处理负边权) 所以还得现学。。。 白点表示已经确定最短路径的点。 蓝点表示还未确定最短路径的点。 因为普通的dijkstra是每次从蓝点中找到一个距离起点的距离最小的点,然后把这个点变成白点, 阅读全文
posted @ 2017-04-10 20:48 zht467 阅读(290) 评论(0) 推荐(1)
摘要: 洛谷模板题 没什么好说的,用spfa来找增广路。 1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 5 using namespace std; 6 7 const int INF = 1 << 26; 8 int n, m, 阅读全文
posted @ 2017-04-10 17:51 zht467 阅读(132) 评论(0) 推荐(1)
摘要: ——果断附isap代码 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 5 using std::min; 6 7 const int maxn = 200001; 8 9 int n, m, cnt, maxflow 阅读全文
posted @ 2017-04-08 19:02 zht467 阅读(124) 评论(0) 推荐(1)
摘要: 洛谷传送门 看到这个题,原本想先从后往前dfs,求出能到终点的点,再在这些点里从前往后spfa,用一条边上的两个城市的商品价格的差来作边权,实施过后,发现图中既有负边权,又有回路,以及各种奇奇怪怪的东西。说实话我连样例都没过,然后提交一下试试,得了10分。 然而我发现,要求赚最多钱,就是到那个点的路 阅读全文
posted @ 2017-04-07 19:49 zht467 阅读(212) 评论(1) 推荐(1)
摘要: 洛谷传送门 这道题可以把边都反着存一遍,从终点开始深搜,然后把到不了的点 和它们所指向的点都去掉。 最后在剩余的点里跑一遍spfa就可以了。 ——代码 #include <cstdio> #include <cstring> #include <queue> const int maxn = 100 阅读全文
posted @ 2017-04-05 21:40 zht467 阅读(181) 评论(0) 推荐(1)
摘要: 洛谷割点模板题——传送门 割边:在连通图中,删除了连通图的某条边后,图不再连通。这样的边被称为割边,也叫做桥。割点:在连通图中,删除了连通图的某个点以及与这个点相连的边后,图不再连通。这样的点被称为割点。DFS搜索树:用DFS对图进行遍历时,按照遍历次序的不同,我们可以得到一棵DFS搜索树。 树边: 阅读全文
posted @ 2017-04-05 16:37 zht467 阅读(516) 评论(1) 推荐(2)
摘要: 传送门 这道题,先用kruskal求一遍图中的最大生成树。 然后,倍增求lca,求lca的同时求出边权的最小值。 #include <cstring> #include <cstdio> #include <algorithm> int n, m, cnt, q, t, k; int f[10001 阅读全文
posted @ 2017-04-05 10:26 zht467 阅读(167) 评论(0) 推荐(1)