图论
ID_BePosit
如果今天不比昨天多做一点什么,那么明天还有什么意义。
展开
-
E - Summer Holiday-联通量求入度
注意 tarjan 的功能是求出 强联通量 进行缩点。最终还需要求一下入度为零的超级点 #include<bits/stdc++.h>using namespace std;#define maxn 2005#define inf 0x3f3f3f3fint a[maxn];vector<int>mmp[maxn];int in[maxn],...原创 2018-08-11 19:58:46 · 167 阅读 · 0 评论 -
D - Network POJ - 缩点判桥TARJAN+LCA
D - Network POJ - 3694 一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥 解题思路:边连通分量+LCA。首先运行一次tarjan,求出桥和缩点,那么无向图将缩点为一棵树,树边正好是原来的桥。每次连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然...原创 2018-10-14 16:27:52 · 190 阅读 · 0 评论 -
图的割点、桥与双连通分支-知识点
[点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。 类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。 [双连通图、割点与桥] ...原创 2018-10-14 20:15:24 · 274 阅读 · 0 评论 -
E - Redundant Paths - 无向图缩点-建边双联通图
E - Redundant Paths POJ - 3177 题意:加几条边使得图是一个边双连通图,缩点,然后找到度数唯一的点,即叶子节点(叶子节点+1)/2 #include<iostream>#include<cstring>#include<stdio.h>using namespace std;#define maxn 5...原创 2018-10-14 20:55:01 · 289 阅读 · 0 评论 -
F - Warm up HDU - 缩点dp求树直径
F - Warm up HDU - 4612 定义: 一棵树的直径就是这棵树上存在的最长路径。 求法: 两次dfs或bfs。第一次任意选一个点进行dfs(bfs)找到离它最远的点,此点就是最长路的一个端点,再以此点进行dfs(bfs),找到离它最远的点,此点就是最长路的另一个端点,于是就找到了树的直径。 证明: 假设此树的最长路径是从s到t,我们选择的点为...原创 2018-10-14 21:59:40 · 353 阅读 · 2 评论 -
C - Test for Job POJ - 拓扑序+DAG最长路
C - Test for Job POJ - 3249 建立超级源点与汇点.然后跑一边拓扑序列。 然后按照拓扑序列中的点去更新他所到达的边. #include<iostream>#include<cstring>#include<stdio.h>using namespace std;#define inf 0x3f3f3f3f...原创 2018-10-30 08:57:09 · 204 阅读 · 0 评论 -
ACM-ICPC北京赛区2018-Jin Yong’s Wukong Ranking List-闭包传递
Jin Yong’s Wukong Ranking List 题意:给出一些人的武功高低,具有传递性即A>B,B>C推出A>C,判断第一个出现矛盾的人若没有输出0 思路:明显的闭包关系传递,数据较小,没出现一条信息之前先跑一边floyd,看看是否与此条信息矛盾 #include<bits/stdc++.h>using namespace std;#de...原创 2018-11-12 11:19:13 · 516 阅读 · 0 评论 -
P2661 信息传递-缩点判环
题意:有 nn 个同学(编号为 11 到 nn )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 ii 的同学的信息传递对象是编号为 T_iTi 的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当...原创 2018-12-18 19:19:14 · 171 阅读 · 0 评论 -
P3387 -缩点-DAGdp
P3387 【模板】缩点 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。 #include<bits/stdc++.h>using namespace std;#define maxn 12345int head[maxn],t...原创 2018-12-18 19:19:27 · 240 阅读 · 0 评论 -
P1262 间谍网络-topo-tarjan
P1262 间谍网络 题意: 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 ...原创 2018-12-18 17:13:48 · 208 阅读 · 0 评论 -
Caocao's Bridges HDU -tarjan割边模板
I - Caocao's Bridges HDU - 4738 如果在这时 我的结点 u 有一条到 v 的边 而且 low[v] <= dfn[u] 这就表示在 u 结点有一条边 可以返回到之前的结点 并形成一个环 那么显而易见 这根本不会是桥相反 只要对每一个边访问 若 low[v] > dfn [u] 那么这条边即为 桥,对于割点有一个 等号的问题,...原创 2018-10-13 21:44:03 · 214 阅读 · 0 评论 -
C - Critical Links UVA - 桥TARJAN割边
C - Critical Links UVA - 796 对于当前结点 ,若邻接点中存在结点 满足 ,则 为割边。 #include<stdio.h>#include<string.h>#include<iostream>#include<vector>#include<algorithm>usin...原创 2018-10-13 20:20:47 · 237 阅读 · 0 评论 -
SDUT 算法训练赛E - Reachability from the Capital (tarjan 缩点)
E - Reachability from the Capital CodeForces - 999E E - Reachability from the Capital CodeForces - 999E #include<bits/stdc++.h>using namespace std;#define maxn 5050vector<...原创 2018-07-04 00:03:00 · 231 阅读 · 0 评论 -
E - Cyclic Components (联通块中求环)
E - Cyclic Components CodeForces - 977E #include <iostream>#include <bits/stdc++.h>using namespace std;#define maxn 200005bool a[maxn];int n;vector<int>gra[maxn];vec...原创 2018-08-08 08:56:37 · 232 阅读 · 0 评论 -
H - Sheba's Amoebas-DFS-判断联通块
H - Sheba's Amoebas Gym - 101673H #include<bits/stdc++.h>using namespace std;char mmp[150][150];int n,m,ans=0;int to[8][2]= {{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};bool...原创 2018-08-16 14:58:20 · 476 阅读 · 0 评论 -
G - 欧拉回路 -无向-度偶-connected graph
图中的度:所谓顶点的度(degree),就是指和该顶点相关联的边数。 在有向图中,度又分为入度和出度。 入度 (in-degree) :以某顶点为弧头,终止于该顶点的弧的数目称为该顶点的入度。 出度 (out-degree) 是指以某顶点为弧尾,起始于该顶点的弧的数目。 在某顶点的入度和出度的和称为该顶点的度 定义: 欧拉回路:每条边恰好只走一次,并能回到出发点...原创 2018-08-16 16:06:55 · 445 阅读 · 0 评论 -
H - Ant Trip HDU-联通块-欧拉路
H - Ant Trip HDU - 3018 题意: 给你无向图的N个点和M条边,保证这M条边都不同且不会存在同一点的自环边,现在问你至少要几笔才能所有边都画一遍.(一笔画的时候笔不离开纸) 思路:其实就是判断连通分量的个数,然后在对每个连通分量做具体判断: (1)如果该连通分量是一个孤立的点,即num[i]==0或num[i]==1的时候,注意num[i]==0表示i不是...原创 2018-08-16 19:17:59 · 161 阅读 · 0 评论 -
D - Pants On Fire -闭包传递
D - Pants On Fire Gym - 101873D 题意: 给出一些正确话 然后给出一下询问这些话是正确错误还是不确定 #include<bits/stdc++.h>using namespace std;#define maxn 555map<string,int>mmp;bool gra[maxn][maxn];stri...原创 2018-08-24 10:54:19 · 411 阅读 · 1 评论 -
D - 祭祀river -最大独立集
D - 祭祀river HYSBZ - 1143 题意: 须非常慎重。准确地说,Y族人认为,如果水流可以从一个祭祀点流到另外一个祭祀点,那么祭祀就会失去它神圣 的意义。族长希望在保持祭祀神圣性的基础上,选择尽可能多的祭祀的地点。 #include<bits/stdc++.h>using namespace std;#define maxn 555int...原创 2018-08-29 21:29:40 · 281 阅读 · 0 评论 -
B - Network UVA - 割点模板
B - Network UVA - 315 我们维护两个数组dfn[]和low[],dfn[u]表示顶点u第几个被(首次)访问,low[u]表示顶点u及其子树中的点,通过非父子边(回边),能够回溯到的最早的点(dfn最小)的dfn值(但不能通过连接u与其父节点的边)。对于边(u, v),如果low[v]>=dfn[u],此时u就是割点。 但这里也出现一个问题:怎么计算low...原创 2018-10-13 16:59:15 · 158 阅读 · 0 评论 -
P3388 【模板】割点(割顶)
QYNqyn P3388 【模板】割点(割顶) 对于非根节点,判断是不是割点就有些麻烦了。我们维护两个数组dfn[]和low[],dfn[u]表示顶点u第几个被(首次)访问,low[u]表示顶点u及其子树中的点,通过非父子边(回边),能够回溯到的最早的点(dfn最小)的dfn值(但不能通过连接u与其父节点的边)。对于边(u, v),如果low[v]>=dfn[u],此时u就是割点。 ...原创 2018-10-13 17:36:29 · 241 阅读 · 0 评论