2012年8月6日

[强联通分量] COJ 1128 Download Station

摘要: 两边DFS求强联通分支,缩点;算法流程:dfs(G);dfs(G') in the order which f[] decreases. output tree in the dfs forest as a strongly connected component第一遍DFS为每个顶点打上时间戳,第二遍是反向DFS,按照时间戳递减的顺序访问每个结点,原图中的边作为反向边进行遍历,此时对于强联通分量必定是可以通过其中任一个点访问到,而原图中时间戳较晚(较早访问到的,注意加时间戳的位置)但不属于某个强联通分量的顶点必然到某个强联通分量有一条单向边,反向DFS时由于原边方向改变,无法通过这条 阅读全文

posted @ 2012-08-06 22:43 getgoing 阅读(268) 评论(0) 推荐(0) 编辑

[拓扑排序] PKU 2585 Window Pains

摘要: 拓扑排序判断有向图是否有环,1A啊!!!对每个位置(前3行前3列),如果它控制范围内的某个位置上为 j ,而这个位置原始值为 i ,则添加一条 i 到 j 的边,如果出现环则说明电脑出问题了;不知道数据中是否含有非法的,所以就加了个判断:判断是否出现了非法状态,即某个位置出现了不属于这个位置的数字。# include <cstdio># include <cstring># define N 5# define NS ((N-1)*(N-1)) + 1const int n = 3;const int m = 9;int in[NS];int f[N][N];char 阅读全文

posted @ 2012-08-06 11:44 getgoing 阅读(175) 评论(0) 推荐(0) 编辑

[拓扑排序] PKU 1094 Sorting It All Out

摘要: 第一道拓扑排序,拓扑排序的过程很简单:每次拿出一个入度为0的顶点放入solu[]尾部,并将它可以直接到达的顶点的入度减1;对这道题需要得到唯一顺序,每次发现有多个入度为0的顶点时,说明还未排好序,此时不应该直接返回cannot be determined而是对所有入度为0的顶点执行上述操作,如果发现到某一步没有入度为0的顶点了说明出现矛盾,此时返回出现矛盾;PS:这道题的输入有重复。# include <cstdio># include <cstring># define N 26 + 1int n, m;int in[N], tmp[N];char ans[N], g 阅读全文

posted @ 2012-08-06 10:08 getgoing 阅读(173) 评论(0) 推荐(0) 编辑

导航