随笔分类 -  图论--强连通分量

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4635tarjan缩点 统计缩点后每个结点的出度入度 将那个包含原来点数最少的 且出度或者入度为0的大节点看作一个整体内部连边n*(n-1)个 连全部的; 其它的点为一整体连全部的 再两者连一同向的边 保证它的出度或者入度依旧为0的情况下任意连 最后减去原来的边M 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define M 100010... 阅读全文
posted @ 2013-08-02 10:46 _雨 阅读(298) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3114缩点+DIJK 注意缩点之后有重边啊 floyd会TLE 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define N 510 8 #define M 301000 9 #define INF 0xfffffff 10 using namespace std; 11 struct node 12 { 13 int u,v,next,w; 14 }edge[M]; 15 int t,low[N],pre[N],scc... 阅读全文
posted @ 2013-06-19 12:36 _雨 阅读(282) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3592提交了30多次了 受不了了 两份的代码基本上一样了 一个AC一个WA 木办法 贴份别人的吧 改得跟我得一样 人家能A 我是WA。。强连通分量缩点 用spfa算出最长路 注意算强连通时加过的值就不再加了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int NN=1606; 9 const int MM=1000000; 10 const int INF=0x3f... 阅读全文
posted @ 2013-06-19 10:51 _雨 阅读(305) 评论(3) 推荐(0)
摘要:http://poj.org/problem?id=2186用tarjan算出强连通分量的个数 将其缩点 连成一棵树 则题目所求即变成求出度为0 的那个节点 在树中是唯一的 即树根 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define M 50010 9 #define N 10010 10 struct node 11 { 12 int u,v,next; 13 }edge[M*2]; 14 in... 阅读全文
posted @ 2013-06-18 17:14 _雨 阅读(169) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1523参考着各种书籍 网上的讲解 及各种tarjan算法 总算 把它捣鼓出来了这题是求割点 及割点分割出来的块数 模板题 块数利用dfs可加出来http://blog.csdn.net/lyy289065406/article/details/6752662从这偷来一些知识点1、【割点】在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。当割点集合的顶点个数只有1个时,该顶点就是割点。2、【连通分量】当删除某个割点后,原图会被划分为若干个互不连通的子图, 阅读全文
posted @ 2013-04-15 14:24 _雨 阅读(311) 评论(0) 推荐(0)