摘要:http://codeforces.com/contest/742/problem/E 跪着看题解后才会的。 对于任何一对BF[i]和GF[i] 连接了一条边后,那么他们和隔壁都是不会有边相连的了,这是题目数据保证的。因为BF[i]和GF[i]是唯一确定的嘛。 那么,我们把BF[i]连接去GF[i]
阅读全文
摘要:http://codeforces.com/contest/742/problem/C 首先把图建起来。 对于每个a[i],那么就在i a[i]建一条边,单向的。 如果有一个点的入度是0或者是>= 2,那么就不行了。直接-1 然后就是把图分成若干个圈了。 对于每一个圈,只需要找一个点,dfs,算出它
阅读全文
摘要:http://codeforces.com/gym/101149/problem/L 给出一个有向图,从0开始,<u, v>表示要学会v,必须掌握u,现在要学会a和b,最小需要经过多少个点。 做这题的时候,一看就觉得是先找出a和b点的lca,但是以前学的LCA是树的,现在这个是图。 一定要知道LCA
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5971 Wrestling Match Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S
阅读全文
摘要:http://www.ifrog.cc/acm/problem/1047 思路很简单,跑一发floyd,然后再用km。 但是问题来了,这个有可能n != m。那怎么办? 其实可以补上一些不存在的点。来使得n = m。他们的权值就设置为0就好了。意思就是这些人的搭配,是对答案没有贡献的。注意不能设置为
阅读全文
摘要:给定一个图,要求选一个点作为起点,然后经过每条边一次,然后把访问过的点异或起来(访问一次就异或一次),然后求最大值。 首先为什么会有最大值这样的分类?就是因为你开始点选择不同,欧拉回路的结果不同,因为是回路,所以你的开始点就会被访问多一次,所以如果是欧拉回路的话,还需要O(n)扫一次,枚举每个点作为
阅读全文
摘要:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 判断一个无向图是否存在欧拉通路。 首先用并查集排除图不联通的情况 如果存在欧拉回路的话,那么所有顶点的度数应该都是偶数。 如果存在欧拉通路的话,那么有且仅有两个顶点的度数是奇数,其他的都是偶数。
阅读全文
摘要:题目就是求一副图的割边,然后对于那些有重复的边的,不能算做割边。 思路就是每次加入一条边的时候,判断这条边是否存在过,存在过的话,就把那条边设为inf,表示不能作为割边。于是有了这样的代码 #include <cstdio> #include <cstdlib> #include <cstring>
阅读全文