摘要: wa的代码。。纯dfs 1 /* 2 LCA 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<algorithm> 8 #include<iostream> 9 #include<queue>10 #include<map>11 #include<math.h>12 #pragma comment(linker, "/STACK:16777216")13 using nam 阅读全文
posted @ 2013-05-22 21:57 xxx0624 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 简单LCA。。。。但是输入的时候很恶心。。。。看discuss,改了scanf才过了。。。 1 /* 2 LCA 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<algorithm> 8 #include<iostream> 9 #include<queue>10 #include<map>11 #include<math.h>12 using namespace std;13 typedef 阅读全文
posted @ 2013-05-22 19:48 xxx0624 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 简单的LCA。。。dfs里fa的判断很重要呀。。。亲。。。 1 /* 2 LCA 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<algorithm> 8 #include<iostream> 9 #include<queue>10 #include<map>11 #include<math.h>12 using namespace std;13 typedef long long ll;14 阅读全文
posted @ 2013-05-22 18:58 xxx0624 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 有向边!!! 1 #include<stdio.h> 2 #include<string> 3 #include<map> 4 #include<stdlib.h> 5 #include<iostream> 6 #include<algorithm> 7 #include<math.h> 8 using namespace std; 9 const int maxn = 200005; 10 struct node{ 11 int from,to,next,val; 12 }edge[ maxn<< 阅读全文
posted @ 2013-05-22 18:36 xxx0624 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 最近总觉得什么都忘了,什么都忘了。。。只好一遍又一遍的复习复习再复习。。。拓扑排序:拓扑排序是一种有向无环图的排序表示,表示顶点的出现顺序。如果有环 则无法表示。算法的关键在于:每次取出一个度为0的顶点(若同时存在多个0度节点,则表示该拓扑排序不唯一),记为S。然后把和S相连的点的度都减1.......重复该过程 即可得到答案。(如果点的个数比较小 可以暴力的写 即两重FOR循环搞定;要么就是用队列,把度为0的点入队。。。)恩。。。好像就这些了。。。 阅读全文
posted @ 2013-05-22 17:59 xxx0624 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。直接根据定义,用双向遍历取交集的方法求强连通分量,时间复杂度为O(N^2+M)。更好的方法是Kosaraju算法或Tarjan算法,两者的时间复杂度都是O(N+M)。本文介绍的是Tarjan算法。[Tarjan算 阅读全文
posted @ 2013-05-22 17:51 xxx0624 阅读(490) 评论(0) 推荐(0) 编辑