Codeforces 22E(图论)】的更多相关文章

题意: 给出n个节点,以及和这个节点指向的节点fi,表示从i能够到达fi,问至少需要添加多少条边能够使得原图变为强连通分量, 输出边数及添加的边,多解输出任意一组解. 2 <= n <= 1e5, 1 <= fi <= n && i != fi. 分析: 注意隐含条件,每个点只有一条出边 所以对于每个连通分量来说,一定是一个有向环上挂着几个有向树 如果只有一个连通分量,那么直接从环上任意一点去连所有的入度为0的点即可 但现在有多个连通分量,先要把连成一个连通分量 我…
题目链接: http://codeforces.com/problemset/problem/242/E E. XOR on Segment time limit per test 4 secondsmemory limit per test 256 megabytes 问题描述 You've got an array a, consisting of n integers a1, a2, ..., an. You are allowed to perform two operations on…
Prelude 真是一道好题,然而比赛的时候花了太多时间在B题上,没时间想这个了QAQ. 题目链接:萌萌哒传送门(.^▽^) Solution 观察样例和样例解释,我们发现,假如有四个点,恰好占据在某一个矩形的四个顶点上,那么这个矩形的四条边,都是可以自由选择画或者不画的. 这时候,我们称这四个点每个点"控制"了四条直线中的一条,可以自由选择这条直线画或者不画.这里可以配合样例解释理解一下. 考虑建立常用的图论模型--行列模型,把每一行抽象成一个点,每一列抽象成一个点,假如在\((x,…
/* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给你一个有n个点,m条边的无向图,给每条边规定一个方向,使得这个图变成有向图,并且使得尽可能多的点入度与出度相同. 输出有多少个这样的点并且输出有向图. 思路: 1.针对每个连通分支. 2.所有点入度与出度相同,显然这是欧拉回路存在的判定定理,但是欧拉回路的另外一个等价定理是所有点的度数是偶数.那如果给我们的图中的某些点是奇数度该怎么办. 3.显然原图中给的点如果度数是奇数,那么该点的入度与出度一定不相同. 4.根据握手定理,无向图中度数是…
大意: 求a->b最短路长度为m的n节点树的个数, 边权全部不超过m 枚举$a$与$b$之间的边数, 再由拓展$Caylay$定理分配其余结点 拓展$Caylay$定理 $n$个有标号节点生成k棵树的森林, 且给定$k$个点各属于$k$棵树的方案数为$kn^{n-k-1}$ 可以得到有$x$条边的方案数为$\binom{m-1}{x-1}\binom{n-2}{x-1}(x-1)!m^{n-1-x}(x+1)n^{n-x-2}$ int n, m; ll fac[N], ifac[N]; ll…
大意: 给N个点,起点S终点T,每个点有X,A,B,C,D,根据I和J的X坐标可得I到J的距离计算公式 |xi - xj| + ci + bj seconds if j< i |xi - xj| + di + aj seconds otherwise (j > i). 求从起点到终点,经过N个点恰好一次的最短路 这题好巧妙啊, 以前都没见过这种做法, 看题解说是要维护一条从S->T的链, 每次贪心往链里添点就行了, 显然这个贪心是与顺序无关的, 所以一定最优. 复杂度是$O(n^2)$的…
链接 大意: 给定邻接表表示两点是否可以连接, 要求将图连成树, 且边不相交的方案数 n范围比较小, 可以直接区间dp $f[l][r]$表示答案, $g[l][r]$表示区间[l,r]全部连通且l,r间连边的方案 #include <iostream> #include <algorithm> #include <cstdio> #define PER(i,a,n) for(int i=n;i>=a;--i) #define REP(i,a,n) for(int…
链接 大意: 给定有向图, 求选择一个点集$S$, 使得$S$任意两点不相连, 且对于不属于$S$的任意点$x$, 均存在$S$中的点$y$, 使得$d(x,y)<=2$, $d(x,y)$为从$x$到$y$的最短路 对于图G, 任选一点M, 删除d(M,x)=1的所有x以及M, 得到生成子图G', 假设已经得到G'的解S', 若S'中有点x使得d(x,M)=1,则S'就是G的解, 否则S'并M构成G的解 #include <iostream> #include <algorith…
有些题还得练练模拟的能力呀 这题一言难尽,他给的 图不是半连通子图呀,我崩溃了 要分好组,然后1给2连,2给3连,.....n给1连.. 具体看代码,我写的比较捞了吧.. #include<iostream> #include<cstring> #include<vector> #include<algorithm> #include<stack> using namespace std; const int maxn = 2e5 + 7; ve…
题目链接: http://codeforces.com/problemset/problem/711/D 题目大意: 给一张N个点N条有向边的图,边可以逆向.问任意逆向若干条边使得这张图无环的方案数(mod 1e9+7). 题目思路: [图论] 因为是N条边所以不会有复杂的环,最多只会有若干组一个环加一条链. 推算得到,一个大小为k的环对答案的贡献是*(2k-2),而长度为k的链对答案的贡献是2k(链不包括环上的) 用dfs找出每一组环的大小和链的长度,计算答案即可. // //by coolx…