摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26780思路:判断一个点是否是割点的两个条件:1、如果一个点v是根结点并且它的子女个数大于等于2,则v是割点。2、如果点v不是根结点,并且存在她的一个子女u,使得low[u]>=dfn[v],则v是割点。然后我发现以前求割点的写法有点问题,=.=//。幸好不是在比赛中遇到!贡献上最新模板。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 444 阅读全文
posted @ 2013-09-24 21:20 ihge2k 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1026思路:Tarjan 算法简单应用。割边的特点:low[v]>dfn[u](v是u的子节点) 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 22222 8 9 struct Edge{10 int v,next;11 }edge[MAXN*22];12 13 int n,NE;14 int head[MAXN];15 16 void.. 阅读全文
posted @ 2013-09-24 20:24 ihge2k 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27115思路:有一个trick要注意:当情况为 2 x y 时,可以推出当y留下时,x也必须留下。然后就是后面的k个限制关系,我们可以3^(k)次方枚举,一旦找到符合条件的就return 。然后就是反向建图,拓扑排序找可行解。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; ... 阅读全文
posted @ 2013-09-24 19:37 ihge2k 阅读(440) 评论(0) 推荐(0) 编辑