随笔分类 -  图的连通性

摘要:#include#include#include#include#includeusing namespace std;const int maxn = 2000 + 30;vector G[maxn], G2[maxn];vector S;int vis[maxn], sccno[maxn], s... 阅读全文
posted @ 2014-09-26 15:26 贝尔摩德 阅读(191) 评论(0) 推荐(0)
摘要:一个有向图,给定起点和终点,问他的割点数,割点是指去掉这个点能使得s和t不通。s和t也是割点。先找一条从s到t的任意路径,假如没有路的话,那么割点数为n,如果找到了一条路径的话,将这条路径上的点标记出来,首先明确一点,割点肯定不会再路径外的点上,因为去掉外面的点后,还是有刚刚那条路径的。所以现在就要... 阅读全文
posted @ 2014-07-14 11:21 贝尔摩德 阅读(425) 评论(0) 推荐(0)
摘要:#include#include#include#include#includeusing namespace std;#define maxn 100000 + 10#define modu 1000000007#define INF 2000000000vector G[maxn], G2[ma... 阅读全文
posted @ 2014-05-04 20:33 贝尔摩德 阅读(168) 评论(0) 推荐(0)
摘要:题目大概意思是给定一个矩阵A,每个元素都非负,主对角线上元素大于0,问是否存在常数k,使得A的k次幂的每个元素都大于0。由A的k次幂联想到离散数学中的可达性矩阵,即问是否存在常数k,使得任意两点之间都存在长度为k的路径,因为主对角线上严格大于0,也就是说有自环,所以只要该图是强联通的即可满足,因为若... 阅读全文
posted @ 2014-03-17 17:46 贝尔摩德 阅读(247) 评论(0) 推荐(0)
摘要:#include#include#include#include#includeusing namespace std;const int maxn = 10000 + 10;vector G[maxn], G2[maxn];vector S;int vis[maxn], sccno[maxn], ... 阅读全文
posted @ 2014-02-08 21:52 贝尔摩德 阅读(151) 评论(0) 推荐(0)
摘要:#include#include#include#include#includeusing namespace std;const int maxn = 100 + 10;vector G[maxn], G2[maxn];vector S;int vis[maxn], sccno[maxn], sc... 阅读全文
posted @ 2014-02-02 12:40 贝尔摩德 阅读(151) 评论(0) 推荐(0)
摘要:出自http://blog.csdn.net/wangjian8006/article/details/7990666##include using namespace std;#define MAXV 5010#define min(a,b) (a>b?b:a)int n,m;bool map[M... 阅读全文
posted @ 2014-01-30 15:21 贝尔摩德 阅读(103) 评论(0) 推荐(0)
摘要:白书上的代码#include#include#include#include#includeusing namespace std;struct Edge { int u, v; };const int maxn = 1000 + 10;int pre[maxn], iscut[maxn], bcc... 阅读全文
posted @ 2014-01-11 10:45 贝尔摩德 阅读(167) 评论(0) 推荐(0)
摘要:#include #include #define clr(a) memset(a,0,sizeof(a))#define N 10005#define M 100005int MIN(int a,int b){ if(anext) if(p->j==j) break; if(p!=NULL) {... 阅读全文
posted @ 2014-01-11 10:38 贝尔摩德 阅读(124) 评论(0) 推荐(0)
摘要:#include #include #define Max 300#define INF 5000000int flow[Max][Max],d[Max];int map[Max][Max];int sta,end; int m,n;int min(int a,int b){ if(a0&&d... 阅读全文
posted @ 2013-12-17 20:38 贝尔摩德 阅读(139) 评论(0) 推荐(0)
摘要:Kosaraju算法是求解有向图强连通分量(strongconnectedcomponent)的三个著名算法之一,能在线性时间求解出一个图的强分量。用Sedgewick爷爷的话说,就是“现代算法设计的胜利”。什么是强连通分量?在这之前先定义一个强连通性(strongconnectivity)的概念:... 阅读全文
posted @ 2013-12-09 11:27 贝尔摩德 阅读(276) 评论(0) 推荐(0)
摘要:#include#include#include#include#includeusing namespace std;const int maxn = 20000 + 10;vector G[maxn], G2[maxn];vector S;int vis[maxn], sccno[maxn], ... 阅读全文
posted @ 2013-12-08 15:23 贝尔摩德 阅读(129) 评论(0) 推荐(0)
摘要://题目大意:对于一个无向图,求删除两个点后能形成的最大连通分量个数。//先枚举每一个点,删除后形成图G,在G上进行tarjan求割点,找出最大值即可。#include #include #include using namespace std;#define maxn 5020vector g[... 阅读全文
posted @ 2013-12-08 15:21 贝尔摩德 阅读(144) 评论(0) 推荐(0)
摘要:强连通分量裸题#include#include#include#include#includeusing namespace std;const int maxn = 10000 + 10;vector G[maxn], G2[maxn];vector S;int vis[maxn], sccno[... 阅读全文
posted @ 2013-11-29 21:17 贝尔摩德 阅读(120) 评论(0) 推荐(0)
摘要:题目即求树上的点覆盖数。对于一个图的点覆盖集,都不存在多项式内的解法,但如果是树的话,却挺容易,有三种方法,第一个是贪心,第二个是树形dp,第三个是二分图匹配(树是一个二分图),我是用贪心做的,先深度优先遍历一遍得到遍历序列,将遍历序列反向(即后序遍历序列)进行贪心,这样可以保证对于每个节点来说,当... 阅读全文
posted @ 2013-11-18 23:43 贝尔摩德 阅读(162) 评论(0) 推荐(0)