
强连通
文章平均质量分 76
a1214034447
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #594 (Div. 2) 题解
题目链接:https://codeforces.com/contest/1248A - Integer Points水题#include<bits/stdc++.h>using namespace std;const int mx = 1e5+5;typedef long long ll;int a[mx],b[mx]; int main(){ int ...原创 2019-11-05 16:00:54 · 356 阅读 · 0 评论 -
hdu 1269-tarjan算法
链接:点击打开链接题解:纯tarjan算法代码:#include#include #include#include#includeusing namespace std;const int mx=1e4+10;int n,m;vector vec[mx];int dfn[mx],id[mx],stack[mx],size,type,is;bool v原创 2017-05-23 18:54:21 · 437 阅读 · 0 评论 -
hdu 5934-建图+强连通缩点
题目链接:点击打开链接 题解思路:这图咋一看就是图论,假设我引爆i点能使j点也引爆,那么就将i,j建立有向边。通过建立的图我们还要将强联通分量缩点,说明这个分量的任意一点引爆都能使其他点都引爆,这里缩点需要得到分量中花费最小的那个点,然后就是求缩完点的所有入度为0的点的和就是了。 代码: #include<bits/stdc++.h>using namesp...原创 2017-11-11 23:05:36 · 361 阅读 · 0 评论 -
CF #469E div2 - tarjan缩点求出度为0点
解题思路:这题很容易就想到了图论,就是两个相邻的点的值不能相同,换个想法就是a和(a+1)%h建立关系,求从一个点出发可以遍历的最小点数是多少,那么首先就是要将一个圈的点都缩为一个点,然后去求出度为0的点肯定是最小的,所以就是在出度为0里面的点去找最小的那个就行了。 #include<bits/stdc++.h>using namespace std;typedef...原创 2018-03-27 20:41:01 · 218 阅读 · 0 评论 -
Codeforces Round 982F
解题思路:tarjan只处理出现了两个强联通分量的问题,要是出现大于1个的分量就输出-1。其实这个问题可以看做是一个强连通分量里面的所以简单环是否存在至少一个公共交点。那么我们假设一个点满足条件就等价于从这个点出发肯定最后不会滞留在一个死循环中,而是最后回到了出发点.对所有路径都满足。如果这个点不满足,那么应该再去找哪个点呢?这个点滞留在死循环中,那么就说明它不属于这个环,所以接下来的那个点一定是...原创 2018-05-31 21:15:49 · 307 阅读 · 0 评论 -
CodeForces #545(div.2)题解
题目链接:http://codeforces.com/contest/1138A. Sushi for Two解题思路:利用"缩点"变成1,2,1,2...或者2,1,2,1...的模式然后每个点都有权值,权值就是原序列相同连续段的总数。最后枚举相邻的两个取max就好了。#include<iostream>#include<cstdio>#inc...原创 2019-03-14 14:14:05 · 241 阅读 · 0 评论 -
Gym - 101170[强连通缩点+DP]
题目链接:https://vjudge.net/problem/Gym-101170B解题思路:题目悄悄地告诉你,最多只含有5元环,所以我们先缩点,然后跑dp。对于一个强连通分量,去暴力每个点的最长路径,当遇到点不属于该连通分量时,直接可以返回其DP值了,对于环内的点最多也就是O(5!)。#include <bits/stdc++.h>using namespac...原创 2019-05-08 22:11:11 · 391 阅读 · 1 评论 -
Gym - 101480J[判环+Hash]
题目链接:https://vjudge.net/problem/Gym-101480J解题思路:因为度最多为3所以流量最多不超过3对于在同一个连通块上:flow ==1对于在同一个环上(可以看做有向图强连通):flow == 2对于某一个点对,删除任意一条边他们还是在同一个环上,说明去掉一个流量他们的流量还是2,所以这种情况:flow == 3对于第三种情况可以枚举每...原创 2019-05-10 10:56:52 · 213 阅读 · 0 评论