摘要:
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1081不是太会写拓扑排序,所以再写一遍。/*Accepted 880 kb 268 ms C++/ 1671 B 2012-07-29 17:08:30*/#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 1 << 10;const int MAXM = 10010;int N, K, M, first[MAXN], e, next[MAXM], v[MAXM];i
阅读全文
摘要:
大致读完题后,可以理解为给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图。参考staginner大牛的写法,将边双连通分量缩点,题再次被转化为“至少在缩点树上增加多少条树边,使得这棵树变为一个双连通图”。首先知道一条等式:若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么至少增加的边数=(这棵树总度数为1的结点数+1)/2计算叶子结点要注意:两两枚举图G的直接连通的点,只要这两个点不在同一个【缩点】中,那么它们各自所在的【缩点】的度数都+1。注意由于图G时无向图,这样做会使得所有【缩点】的度数都是真实度数的2倍,必须除以2后再判断叶子。也可以将度为2的点当作叶子,这样就
阅读全文
摘要:
参考了题解将这题的代码写了一遍,整体来说收获还是比较大的。用邻接矩阵g存骑士的关系,相互憎恨就连一条边。然后建立图g的补图,这里用邻接表会更好,表示这些骑士是可以相邻的。然后用tarjan算法求补图的双连通分量,注意题目要求骑士g要在奇圈中。传送门:http://blog.csdn.net/lyy289065406/article/details/6756821有详细分析过程,膜拜下。/*Accepted 8468K 1266MS C++ 2516B 2012-07-29 15:29:42*/#include<cstdio>#include<cstring>#in...
阅读全文
摘要:
原文转自Jelline bloghttp://blog.chinaunix.net/uid-9112803-id-411340.html摘要:本文用另一种思路重新组织《图论及其应用》相关知识。首先,用通俗化语言阐述了如何对事物间联系的问题进行图论建模;接着从现实例子出发,给出各种典型图论模型,每种图论模型对应于图论一个重要内容;再者,介绍相关知识对上述提到的图论模型涉及的问题进行解答;最后,补充一些图论其他知识,包括图论分支、易混概念。符号约定:Q(Question)表示对问题描述,M(Modeling)表示数学建模过程,A(Answer)表示原问题转化为何种图论问题。一、引言图论是研究点、线
阅读全文