连通图
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
-
D. Harmonious Graph
题目:D. Harmonious Graph总结:将每一个连通块的所有点都指向该连通图的最大点。从1点开始遍历,假设fa[1] = x;那么从2~(x-1)的所有点的根结点都一定会指向x。(是在一个连通块),如果此时有一个点的根结点是y,不是x,那么就需要把这两个连通块连起来了。这时候从2开始到max(x,y),都一定是的根结点一定都是指向max(x,y),所以x的值要选择大的。避免两个连通块有...原创 2020-10-19 15:36:56 · 550 阅读 · 0 评论 -
D. 0-1 MST
题目:D. 0-1 MST总结 :题目求的就是补图的连通块-1。首先可以把1~n个点都存放到set的s中。当某个点没有被访问过的时候,就调用bfs函数,从s中删除,因为这个点已经访问了,并且加入到队列中。寻找在补图中和这个点相连的,遍历s,如果找到一个v和k并没有相连,就说明它们是补图中相连的。就从s中删除,加入队列,并且做上标记。/*求补图的连通块*/#include <bits/...原创 2020-10-19 15:36:52 · 617 阅读 · 1 评论 -
Network of Schools
题目:Network of Schools总结:题目第一问求是缩点之后,入度为0的点的个数。第二问求的是缩点之后,max(入度为0的点的个数,出度为0的点的个数)。可以先用tarjan进行染色。然后再新建立一个图,分别求出它们的入度和出度。#include <stdio.h>#include <stack>#include <map>#include ...原创 2020-10-19 15:37:01 · 444 阅读 · 0 评论 -
Warm up
题目:Warm up总结:答案就是用桥的数量减去缩点之后树的直径,找了半天也没找到我哪里错了,最后还是对照着别人的代码,一点一点看的。#include <bits/stdc++.h>using namespace std;typedef pair<int,int>P;const int N = 2e5+5;const int M = 2e6+5;vector...原创 2020-10-19 15:37:06 · 226 阅读 · 0 评论 -
Redundant Paths
题目:Redundant Paths总结 :这道题先给一个无向连通图,问加最少的边使这个图成为双连通图。可以先用tarjan求出桥,并且给桥做出标记。然后再用dfs给每一个点标记一个新的编号,这个地方需要利用br数组,此时的br数组为1 的是保存的是桥的起点和终点。然后统计这个新图的度为1的点答案 = (新图度为1的点+1)/2#include <stdio.h>#inclu...原创 2020-10-19 15:37:11 · 367 阅读 · 0 评论 -
Caocao‘s Bridges
题目:Caocao’s Bridges总结:用tarjan模板,但是需要注意有几个坑。如果不是连通图,直接输出0,如果没有桥输入-1,如果答案为0,输出1。特别需要注意有重边,所以这个地方有个小技巧。看算法竞赛进阶指南P366#include <bits/stdc++.h>using namespace std;typedef pair<int,int>P;co...原创 2020-10-19 15:37:16 · 323 阅读 · 0 评论 -
Critical Links(求割边)
题目:Critical Links总结:用tarjan模板,x = fa[i]; x是i的父亲节点。若这时满足dfn[x] < low[i],说明x->i是一条桥。这个式子的意思是i的子树的时间戳的最小的都大于x的时间戳,此时一定没有别的边相连。所以这个肯定是割边#include <bits/stdc++.h>using namespace std;const...原创 2020-10-19 15:37:21 · 202 阅读 · 0 评论 -
Network
题目:Network总结:使用tarjan模板。我也对tarjan算法理解的更深了#include <bits/stdc++.h>using namespace std;const int N = 1e3+5;const int mod = 1000000007;vector<int>G[N];int dfn[N],low[N],ans[N];int n...原创 2020-10-19 15:40:12 · 438 阅读 · 0 评论 -
Network(POJ1144)
DescriptionA Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting several places numbered by integers from 1 to N . No two places have the same number. The ...原创 2020-10-19 15:40:38 · 296 阅读 · 0 评论 -
SPF(POJ1523)
Consider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a failure of a single node, 3, in the network on th...原创 2020-10-19 15:40:43 · 291 阅读 · 0 评论 -
迷宫城堡(求强连通分量)
题目:迷宫城堡一道模板题https://blog.csdn.net/weixin_44959460/article/details/89454190#include <stdio.h>#include <stack>#include <map>#include <algorithm>#include <string.h>u...原创 2020-10-19 15:41:41 · 207 阅读 · 0 评论 -
The Cow Prom
题目:The Cow Prom思路:用模板,统计每个连通分量内点大于1的个数#include <stdio.h>#include <stack>#include <map>#include <algorithm>using namespace std;const int N = 5e+5+10;struct str{ int do...原创 2020-10-19 15:41:52 · 351 阅读 · 0 评论 -
P3388 【模板】割点(割顶)
题目背景割点题目描述给出一个nn个点,mm条边的无向图,求图的割点。输入格式第一行输入n,mn,m下面mm行每行输入x,yx,y表示xx到yy有一条边输出格式第一行输出割点个数第二行按照节点编号从小到大输出节点,用空格隔开输入输出样例输入 #1 复制6 71 21 31 42 53 54 55 6输出 #1 复制15说明/提示对于全部数据,n \le...原创 2020-10-19 15:38:28 · 223 阅读 · 0 评论 -
P3387 【模板】缩点
题目背景缩点+DP题目描述给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入格式第一行,n,m第二行,n个整数,依次代表点权第三至m+2行,每行两个整数u,v,表示u->v有一条有向边输出格式共一行,最大的点权之和。输入输出样例输入 #1 ...原创 2020-10-19 15:39:04 · 296 阅读 · 0 评论