连通图
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
HDU - 1814 Peaceful Commission(2-sat输出字典序最小)
题意:给你n个组,m条规则,每组有俩个人,这两个人不能同时出现,然后m条规则代表着有两个人,这两个人也不能同时出现,问你是否存在每组都能出现一人的选择方案。思路:没什么好方法,暴力判,枚举每对元素,先优先取靠前的那个,把它所有连了边的都取了然后打tag,如果它不会产生矛盾,那么继续,如果有,那么先把所有的tag取消,再判断a+1有没有矛盾,如果a+1也有矛盾,那这组数据就不行了。#inc...原创 2019-11-11 15:02:13 · 315 阅读 · 0 评论 -
2-sat情况总结
原创 2019-11-10 23:50:49 · 215 阅读 · 0 评论 -
HDU5971Wrestling Match(2-sat,提前确定节点值)
模型:a对b错,a错则b对。但提前确定了几个节点的对错。#include<bits/stdc++.h>#define ll long long#define MP make_pair#define P pair<long long, long long>using namespace std;const int N = 6e4 + 10;int t, n,...原创 2019-11-10 23:50:54 · 223 阅读 · 0 评论 -
P4171 [JSOI2010]满汉全席(2-sat)
模型:两个至少选一个。#include<bits/stdc++.h>#define ll long long#define MP make_pair#define P pair<long long, long long>using namespace std;const int N = 2e3 + 10;int t, n, m, h[N], cnt;in...原创 2019-11-10 23:51:02 · 203 阅读 · 0 评论 -
poj1734Sightseeing trip(无向图求最小环输出路径模板)
题意,给出无向图,找出一个节点数大于等于3的最小环,输出路径。#include<cstdio>#include<algorithm>using namespace std;const int N = 105;const int INF = 10000000;int dist[N][N], g[N][N];int fa[N][N], path[N];int...原创 2019-10-31 10:40:00 · 198 阅读 · 0 评论 -
P3469 [POI2008]BLO-Blockade (tarjan求割点并计算连通块大小)
题意:给出n个点,m条边,再给出q个点,表示只删除第qi个点时有多少对点不能互相到达。思路:首先知道如果删除的点不是割点的话,有2*(n-1)对点不能互相到达。若是割点的话,还要加上若删除这个割点后剩下的几个连通块的积。#include <bits/stdc++.h>#define ll long longusing namespace std;const int N ...原创 2019-09-30 11:06:29 · 210 阅读 · 0 评论 -
DFS序
DFS序就是将树形结构转化为线性结构,用dfs遍历一遍这棵树,进入到x节点有一个in时间戳,递归退出时有一个out时间戳,x节点的两个时间戳之间遍历到的点,就是根为x的子树的所有节点,他们的dfs进入时间戳是递增的。同时两个时间戳构成了一个区间,x节点在这段区间的最左端,这个区间就是一棵根节点为x的子树,对于区间的操作就是其他维护方式的应用了。模板题:POJ3321题意:给一个普通...原创 2019-10-04 23:06:29 · 244 阅读 · 1 评论 -
Rainbow Roads(dfs序+树上差分)
题目链接,D题题意: 给出一颗树,树上每条边都有一个颜色,定义如果以这个点为端点的所有简单路径都没有相邻的两条边颜色相同时,这个点为good点,求goodgoodgood点的数量以及是哪个点。思路:假设节点u和节点v均与节点w相邻,且e(w,u)与e(w,v)颜色相同,那么要分两种情况:uuu,vvv均是w的子树,则这两个点的子树上所有的点包括这两个点都不是goodgoodgood点。...原创 2019-10-05 00:40:32 · 274 阅读 · 0 评论 -
P3225 [HNOI2012]矿场搭建
题目描述煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数。输入格式输入文件有若干组数据,每组数据的第一行是一个正整...原创 2019-10-10 15:02:46 · 199 阅读 · 0 评论 -
2019ccpc网络赛1004path
题意:给出一个有向加权图,再给出k次询问,每次询问这个图中所有路径的第k小值。思路:用优先队列,队列里对路径权值从小到大排序,记录节点的父亲节点,本节点,权值,id(本节点是通过父亲节点的第id小的边扩展到的·),每次扩展本节点的最小边和上一节点的id+1小边。之所以这样扩展是为了防止菊花图这种所有节点都连在同一节点的情况。#include <bits/stdc++.h>#...原创 2019-08-24 14:38:45 · 269 阅读 · 0 评论 -
2019牛客暑期多校训练营(第四场)A - meeting(树求直径)
题意:在一棵树上,多个节点有人。选择一个节点使得这些人到这个点的路径最大值最小。思路:把那些没有人的叶节点删去,然后求剩下的树的直径除2就是答案。#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n, k, h[N], cnt, is[N], mx, p, x;struct no...原创 2019-07-28 16:56:55 · 180 阅读 · 0 评论 -
P2341 [HAOI2006]受欢迎的牛 (tarjan缩点+出度)
题意:每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果A喜欢B,B喜欢C,那么A也喜欢C。牛栏里共有N 头奶牛,给定一些奶牛之间的爱慕关系,请你算出有多少头奶牛可以当明星。思路:tarjan缩点后找出度为0的点,若有1个,则是明星,超过1个则没有明星。#include<bits/s...原创 2019-05-31 16:19:09 · 232 阅读 · 0 评论 -
2014 Nordic Collegiate Programming Contest A Amanda Lounges
题意:给n个点和m条信息,每条信息表示x和y中有z个休息室,问能不能有一种符合条件且休息室个数最少的方案。读入数据时,先判断z,若z等于2,则给x,y都染上色1,若x,y中有颜色0 则不行,若z等于0,则给x,y都染上色0,若x,y中有颜色1 则不行。若z=1,就在x,y间建一条边。先以已经有颜色的点为起始点去dfs染色,染色过程中出现矛盾就不行再对其他没有颜色的点dfs染色,如果有矛盾...原创 2019-04-18 12:45:57 · 346 阅读 · 0 评论 -
P3387 【模板】缩点
题意:给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。思路:tarjan缩点后重新建图,在新图上BFS算最长路#include <bits/stdc++.h>#define ll long longusing namespace std;...原创 2019-05-16 16:21:37 · 206 阅读 · 0 评论 -
无向图的割点与桥
给定无向连通图G=(V,E);割点:若对于,从图中删去节点x与所有与x关联的边后,G分为两个或以上不相连的子图,则称x为G的割点。割边:若对于,从图中删去边e之后,G分为两个不相连的子图,则称e为桥或割边。割边的判定法则:无向边(x,y)是桥,当且仅当搜索树上存在x的一个子节点y,满足:dfn[x]<low[y]hdu4738#include <bi...原创 2019-05-16 21:34:45 · 767 阅读 · 0 评论 -
BZOJ1123: [POI2008]BLO(tarjan求割点)
DescriptionByteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通。Input输入n<=100000 m<=500000及m条边Output输出n个数,代表如果把第i个点去掉,将有多少对点不能互通。思路:tarjan求割点模板,再用一下乘法原理,记得开lon...原创 2019-05-16 21:48:24 · 223 阅读 · 0 评论 -
Educational Codeforces Round 49 (Rated for Div. 2) D. Mouse Hunt
题意:有n个房间,保证每一个房间只会通向另一个房间,有一只老鼠,初始房间不一定,它会在相通的房间内乱窜,你有无数个老鼠夹,可以放到任意房间内,保证老鼠已进入该房间就会被抓住,在不同的房间内放老鼠夹都会有一个对应的代价,问最少花费多少的代价,才能保证老鼠不管初始在哪个房间内都会被抓住。思路:tarjan+缩点,将一个强连通块缩为一个点,这个点的val为这个强连通块里的最小val,然后统计...原创 2019-05-17 22:04:11 · 336 阅读 · 0 评论 -
hdu4635 Strongly connected(tarjan+缩点后入度出度)
题意:给定一个n个节点,m条边的有向图,求最大可以增加多少条边使得这个有向图仍然不是强连通。思路:可以把图分为两部分,x和y,x、y图是强连通图,xy之间的边的方向是一致的,全是x的点到y的点或y到x,这样才能使边最多。设x的点为a个,则x图的边最多a*(a-1)个,y也一样是b*(b-1),xy之间的边最多x*y个,ans=a*(a-1)+b*(b-1)-x*y-m=n*n-...原创 2019-05-23 15:58:37 · 212 阅读 · 0 评论 -
hdu4612 Warm up(无向图缩点 树的直径)
题意:有n个点,m条无向边,问加一条边,最少可以剩下几个桥思路:双联通分量缩点,然后在树上求最长路,就是要加的边。另外:不能用桥的数量去当做双联通分量的个数,wa了无数回才发现。#include <bits/stdc++.h>using namespace std;const int N = 3e5 + 10;int n, m, h[N], cnt, ans;in...原创 2019-05-18 20:38:08 · 226 阅读 · 0 评论 -
poj3177Redundant Paths(tarjan+桥)
题意:有F个牧场,1<=F<=5000,现在一个牧群经常需要从一个牧场迁移到另一个牧场。奶牛们已经厌烦老是走同一条路,所以有必要再新修几条路,这样它们从一个牧场迁移到另一个牧场时总是可以选择至少两条独立的路。现在F个牧场的任何两个牧场之间已经至少有一条路了,奶牛们需要至少有两条。给定现有的R条直接连接两个牧场的路,F-1<=R<=10000,计算至少需要新修多少条直接连接...原创 2019-05-23 18:06:49 · 200 阅读 · 1 评论 -
P1726 上白泽慧音(强连通分量)
题目描述在幻想乡,上白泽慧音是以知识渊博闻名的老师。春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄。因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点。人间之里由N个村庄(编号为1..N)和M条道路组成,道路分为两种一种为单向通行的,一种为双向通行的,分别用1和2来标记。如果存在由村庄A到达村庄B的通路,那么我们认为可以从村庄A到达村庄B,记为(A,B...原创 2018-12-20 21:22:47 · 198 阅读 · 0 评论