数据结构--图论
无心流泪
这个作者很懒,什么都没留下…
展开
-
关于有向图的强连通分量
有向图的强连通分量一个有向图中,如果节点i能够通过一些边到达节点j,就简写成i能到达j。如果对于任意两个节点i,j均有i能到达j或j能到达i,则说此图是连通的。如果对于任意两个节点i,j均有i能到达j且j能到达i,则说此图是强连通的。对于一个无向图,说强联通没有意义,因为此时强连通就是连通。而对于一个有向图,它不一定是强连通的,但可以分为几个极大的强连通子图(“极大”的意思是再加入任何一个顶点原创 2013-07-12 23:05:38 · 12548 阅读 · 0 评论 -
uestc oj 1876 聚会
聚会party.pas/c/cpp1s/64MB 【题目描述】n个人打算一起聚会,聚会的地点定在第一个人家里,现在除了第一个人已经在家之外其他人都不在第一个人家里,求n个人到第一个人家里的最短路径长度总和。【输入】输入第一行包含两个数n, m,表示人数和以及连通这个n人所在位置的道路数。接下来的m行每行有3个数ai, bi, wi,表原创 2013-06-28 20:57:06 · 950 阅读 · 0 评论 -
poj 1470 Closest Common Ancestors
这个题目是典型的利用tarjan算法求取最近公共祖先的题目#include using namespace std; const int mm=1111111; const int mn=1111; int t[mm],p[mm]; int h[mn],q[mn],f[mn],sum[mn]; bool vis[mn]; int i,j,k,c,e,n; i转载 2013-07-12 01:03:15 · 822 阅读 · 0 评论 -
poj 2186 Popular Cows
#include#include#define adj 10010#define edg 50010struct node{ int v; int next;};node edge[edg];node edge1[edg];int low[adj],dfn[adj],Stack[adj];int first[adj],first1[adj],fuck[adj];bool转载 2013-07-12 01:02:48 · 779 阅读 · 0 评论 -
dijkstra 不能处理带负权的图
因为dijkstra是处理单源的最短路径,依次寻找,如果出现负权的话就会出现如下错误如果有1->2 101->3 203->2 -5就会出现1->2的最短路径是10的错误答案如果1->2 101->3 202->3 -5结果还是正确的所以用dijkstra求取最短路就会出现不确定现象的原创 2013-06-11 12:44:15 · 1836 阅读 · 3 评论 -
最近公共祖先算法(LCA)
http://blog.csdn.net/taotaotaotao910429/article/details/7746650发现网上对此算法真是多之又多,看了几个小时才算看懂。 写下我的理解思路,首先,LCA要用到并查集和深度优先搜索,其中并查集用来查找和合并各个节点集合,深度优先搜索用了搜索问题节点是否在同一个集合中。其实就是递归。(1):其中递的过程:首先转载 2013-06-28 20:56:30 · 1076 阅读 · 0 评论