Codeforces 542E Playing on Graph 其他】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/CF542E.html 题目传送门 - CF542E 题目传送门 - 51Nod1481 题意 有一幅无向图,它有n个点,m条边,没有自环和重边.定义合并操作,这个合并操作是把两个没有边直接连接的点合并成一个新点,把和旧的两个点至少有一个有边的点和这个新点连边.然后原来的两个旧点删除.这样就把n个点的无向图变成了n-1个点的无向图. 现在,要求你对这个图进行合并操作,最后形成一条链,而且这个链要尽可能的长.一条…
题目链接 \(Description\) 给出一个n个点m条边的无向图. 你每次需要选择两个没有边相连的点,将它们合并为一个新点,直到这张图变成了一条链. 最大化这条链的长度,或输出无解. n<=1000,m<=10000 \(Solution\) 不难发现无解当且仅当存在奇环. 归纳证明:有一个奇环,若与环外一个点合并,这个奇环仍存在:若环内两个点合并,合并两点两边的边数是奇数,合并之后还是至少会有一边边数是奇数,是一个奇环(最后变成一个三角形).这样怎么合并都会剩下一个奇环. 若不存在奇环…
cf 542E - Playing on Graph 题目大意 给定一个\(n\le 1000\)个点的图 求经过一系列收缩操作后能否得到一条链,以及能得到的最长链是多长 收缩操作: 选择两个不直接相连的点,构造一个新点 对于原图中的每一个点,如果它与这两个点中的任意一个有连边 那么它向这个新点连一条边 最后删除选择的两个点,以及所有这两个点的连边 分析 注意到对于一个奇环,无论怎么收缩,都会产生一个新的奇环,最后奇环变成一个三角形,再也缩不了,永远无法变成一条链 只有偶环的图是二分图 对于图中…
题目链接:Codeforces 459E Pashmak and Graph 题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径. 解题思路:将边依照权值排序,每次将同样权值的边同一时候增加,维护每一个点作为终止点的最大长度就可以. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn…
Playing on Graph Time Limit: 20 Sec  Memory Limit: 512 MB Description Input Output Sample Input 5 4 1 2 2 3 3 4 3 5 Sample Output 3 HINT n <= 1000, m <= 10^5 Solution 我们先考虑无解的情况.显然就是图中有奇环的时候无解,因为你将奇环上两点缩起来,最后必定会变成一个三元环,而三元环是不能合并的.所以就可以Dfs黑白染色一下,若是搜到…
CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找出 \(i\) 号点到 \(j\) 号点的最短路径.则该最短路径只有两种可能: \(i\) 号点直接到达 \(j\) 号点的路径中产生最短路径 \(i\) 号点经过一些中间点到达 \(j\) 号点的路径中产生最短路径 我们添加一个点 \(k\),使得 \(i\) 号点到 \(j\) 号点再添加后产生…
Playing with Superglue 题目连接: http://codeforces.com/problemset/problem/176/C Description Two players play a game. The game is played on a rectangular board with n × m squares. At the beginning of the game two different squares of the board have two ch…
Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Greg has a weighed directed graph, consisting of n vertices. In this graph any pair of distinct vertices has an edge between…
传送门:https://codeforces.com/gym/100801 题意: 给你一个DAG图,你最多可以进行k次操作,每次操作可以连一条有向边,问你经过连边操作后最小拓扑序的最大值是多少 题解: 最小拓扑序:与普通拓扑序不同的是,用一个小根堆记录入度为0的点做拓扑排序即可 怎么样使得最小拓扑序最大呢?已知拓扑序是入度小的点在前面,那么,如果我们可以使得大的点的度数尽量小或者是小的点度数尽量大就可以使得拓扑序变大了,由于我们只有加边的操作,那么我们可以将边尽量从大的点往小的点去连边 我们定…
Description You are given undirected weighted graph. Find the length of the shortest cycle which starts from the vertex 1 and passes throught all the edges at least once. Graph may contain multiply edges between a pair of vertices and loops (edges fr…