连通图
星空皓月
工欲善其事,必先利其器。
展开
-
洛谷 - P1262 -- 间谍网络【缩点 + 入度为0】
思路如果某个罪犯不能贿赂或者没人揭发他,输出最小编号即可,怎么输出最小编号?我们可以在进行tarjan算法时,判断时间戳为0的结点的同时进行判断是否能被贿赂,如果不能则不进行tarjan。从1到n枚举看是否有时间戳为0的结点就是最小的编号。2.存在解分两种情况:第一,起始结点不形成环,那么就是入度为0的结点贿赂总值;第二,起始结点形成环,那么就是求这个环中最小贿赂值。结合这两点,进行缩点后求入度为0的结点贿赂总值。AC代码#include<cstdio>#include<原创 2020-08-18 11:39:28 · 285 阅读 · 0 评论 -
LibreOJ - 10093 -- 网络协议【缩点 + 出度与入度的关系】
思路任务1:要让每个学校都有新软件用,缩点后求入度为0的结点。任务2:连接入度为0的结点和出度为0的结点,求入度为0的结点个数与出度为0的结点个数的最大值。特判:当此图为强连通图时,需要投放一个零件,支援关系为0。关于任务2的图形解释:缩点后的关系需要建立的关系如果还有一个强连通分量,此时需要更改原有的连接关系。综上,将入度为0的点和出度为0的点两两连接,求一个入度为0和出度为0的最大值。AC代码/** 缩点 + 统计入度为0的点有多少个 */#include<cs原创 2020-08-18 11:23:49 · 225 阅读 · 0 评论 -
洛谷 - P3627 [APIO2009] -- 抢掠计划【缩点 + 最长路】
思路1.先缩点,求出每个强连通分量的金钱数2.然后建立缩点后的关系以及权值,跑一个模板最长路(路径取反,跑dijkstra(没有环)或者spfa)。AC代码/** 缩点 + spfa走最长路 */#include<cstdio>#include<iostream>#include<vector>#include<stack>#include<queue>#include<cstring>#include<原创 2020-08-18 10:45:54 · 149 阅读 · 0 评论 -
洛谷 - P2341 -- 受欢迎的牛G【Tarjan缩点后求出度为0的结点 】
思路欢迎的牛有两种情况:子图是一个强连通图,里面的每个结点都满足条件出度为0的结点,满足情况综合上面两种情况,将图缩点后,就统计出度为0的结点。如果缩点后的图有多个出度为0的,则不符合题意提前退出。AC代码/** 缩点 + 统计出度为零的点是否等于1*/#include<cstdio>#include<iostream>#include<stack>#include<cstring>#include<algori原创 2020-08-17 22:34:01 · 191 阅读 · 0 评论 -
计蒜客 - T2026 -- 信息传递【求最小环长 :bfs + 并查集 or Trajan】
思路1:bfs + 并查集题意很简单,画个图就知道是求最小环长,利用并查集将v认u为父亲,最终在个集合里面的根节点都是起始结点。最后走一个bfs或者dfs就能跑出答案。AC代码#include<cstdio>#include<iostream>#include<vector>#include<queue>#include<cstring>#include<algorithm>using namespace std;原创 2020-08-17 22:18:37 · 248 阅读 · 0 评论