随笔分类 - 图论(杂)
摘要:题意:选俩条除起点终点(1为起点,n为终点),所经过互不相交的路径,并要求最小cost 分析:很明显的最小费用最大流问题,最大流为路径数时2, 经验:要熟悉这种题型:“互不相交的路径”可以望网络流方向思考 #include<bits/stdc++.h> using namespace std; co
阅读全文
摘要:题意:类似二分图匹配给的题目,不过这次在这里给出了k,表示没人可以再多一次匹配机会,这次匹配不能用上一次被匹配的对象 分析:不能用匈牙利做俩次匹配,因为俩次的最大匹配并不等价于总和的匹配,事实证明,你用俩次匹配后会被卡在17个样例 既然二分图不能用匈牙利,那么只能考虑用网络流,这里讲到对于k的处理,
阅读全文
摘要:题:http://acm.hdu.edu.cn/showproblem.php?pid=6736 题意:删掉一些边使得图不存在点双,求方案数。 分析:若一条边不属于点双,那么这条边有删和不删俩种选择,若找到点双,点双中必须删掉一条边(题目有保证一条边只能属于一个点双,所以不用担心一条边用于多个点双)
阅读全文
摘要:学习粗:https://blog.csdn.net/ddelphine/article/details/77935670 模板题:http://poj.org/problem?id=2914 #include <iostream> #include<cstring> using namespace
阅读全文
摘要:题:https://nanti.jisuanke.com/t/41349 分析:对于hero来说,走单源最短路,然后遍历dis数组中的最大值即可找到,对于消防员来说,走多源最短路,只需要建个超级起点连接各个消防点,边权为0走spfa即可出dis数组 注意:得无向边 #include<bits/std
阅读全文
摘要:题:https://www.luogu.org/problem/P3115 题意:给出起点A,终点B,N条路线,下面没俩行一个路线,第一行是俩个数,第一个为这条路线的花费,第二个为这条路线经过的点数n,第二行即为n个整数表示这条路径; 分析:1、题目有说如果要跳转航线就要花费被跳往航线的的费用,所以
阅读全文
摘要:题意:给定一个无向图,删除某些边有一定的代价,要求删掉使得最短路径减小,求最小代价。 分析:首先要spfa求出起点到各个点的最短距离。对于一条权值为w,起点为i,终点为j的边,设dis[k]为起点到k点的距离,若dis[j]=dis[i]+w,则将该边加入另一个图里,边的容量为删除这条边的代价,则从
阅读全文
摘要:http://codeforces.com/gym/102222/problem/F fory #include<bits/stdc++.h> using namespace std; typedef long long ll; #define lson root<<1,l,midd #define
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5452 题意:给个图T(图G的最小生成树),然后再给定图G的剩余边,问你从图T中当且割一条边的情况再割图G中不属于图T的边,使整个图(图G)不联通,求最小割; 分析:1、只能并且要求割图T中的一条边,所以只能割叶子
阅读全文
摘要:http://poj.org/problem?id=3228 题意:就是图上有n个点,m条边,题目给的俩个长度为n的序列,第一个是表示i位置的宝藏的体积V,第二个序列是表示i位置能容纳的宝藏体积V。然后给出m条边和权值。最终要问把这些宝藏全部放置在仓库所要走的路径中哪一条边最大(要这个最大值尽可能小
阅读全文
摘要:http://poj.org/problem?id=3723 题意:给定n个男生和m个女生的关系,各个关系具有一定的权值,然后要挑选出所有人,每个人的代价是10000,但挑选人的过程中这些权值就是可以用来减去费用,求cost的min #include<cstdio> #include<string>
阅读全文
摘要:洛谷2661 https://www.luogu.org/problemnew/show/P2661 分析:求缩点后成环中,环大小最小的size #include<bits/stdc++.h> using namespace std; const int M=2e5+5; vector<int>e[
阅读全文
摘要:http://poj.org/problem?id=3694 给一副图,(可能有环,但联通)然后给定q次询问,每次询问的u,v是要加上去的边,问加上去后,若图的边联通度还是1时,有多少条桥 利用并查集缩点,先用tarjan求出总的桥的数量; 利用tarjan中的dfn来找每次u,v的LCA,u到v路
阅读全文
摘要:http://poj.org/problem?id=1679 #include<iostream> #include<vector> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct
阅读全文
摘要:https://www.luogu.org/problemnew/show/P3225 用Tarjan跑出割点,然后DFS搜索所有的联通快 计算每一个联通快中的割点数目 分类讨论: 如果没有割点 至少需要建立两个出口 从任意非割点的地方选择两个点建立 如果这个分组只有一个割点 只需要在分组内设立一个
阅读全文
摘要:学习出https://blog.csdn.net/sunny_hun/article/details/80627351 题:poj1325 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using
阅读全文
摘要:概念: 边双连通分量:不存在桥的无向图为边双连通图, 极大边双连通图为边双连通分量(以点存) #include<bits/stdc++.h> #define N 100010 using namespace std; struct node{ int v,nextt; }e[N<<1]; //c[x
阅读全文
摘要:割点: void tarjan(int u){ dfn[u]=low[u]=++cnt; int flag=0; for(int i=head[u];~i;i=e[i].nextt){ int v=e[i].v; if(!dfn[v]){ tarjan(v); low[u]=min(low[u],l
阅读全文
摘要:学习资料:https://www.cnblogs.com/shadowland/p/5872257.html 板子: void tarjan(int u){ dfn[u]=low[u]=++cnt; sta[++top]=u; vis[u]=true; for(int i=0;i<g[u].size
阅读全文
摘要:hdu1285 http://acm.hdu.edu.cn/showproblem.php?pid=1285 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #inc
阅读全文

浙公网安备 33010602011771号