
ACM
文章平均质量分 74
lazy_virus
这个作者很懒,什么都没留下…
展开
-
hdu1269——迷宫城堡
<br />强连通问题,选用tarjan算法,如果单纯的判断,并查集也可以考虑!但,tarjan算法的作用不止可以判断是否连通,还可以求出各个子树!<br />对于tarjan算法的描述,见:http://www.byvoid.com/blog/scc-tarjan/<br />#include<stdio.h>#include<malloc.h>#include<string.h>#define max 10005int dfn[max],stack[max],low[max];int原创 2010-09-19 19:52:00 · 967 阅读 · 0 评论 -
1053. Path of Equal Weight——深搜
方便输出的一点操作:将子节点根据weight来排序,这样遍历到符合要求的路径就可以直接输出! #include#include#include#includeusing namespace std;const int maxn=105;int n,m,s;class node{public: int cnt,flag; int son[maxn];};nod原创 2013-10-03 17:02:18 · 921 阅读 · 0 评论 -
1018. Public Bike Management (27分)——深搜
#include#include#includeusing namespace std;const int maxn=505;const int bignum=999999;int C,N,S,M;class node{public: int to,next,cost;};node edge[maxn*3];int head[maxn],cnt=0,vis[maxn],原创 2013-10-02 14:06:52 · 897 阅读 · 0 评论 -
1017. Queueing at Bank——优先队列
其实可以不用优先队列的! 优先队列需要重载“#include#include#include#include#includeusing namespace std; const int maxn =10003;class node{public: int h,m,s,pro; }; bool operator<(const node &a,const n原创 2013-10-01 01:50:10 · 735 阅读 · 0 评论 -
pat 1003. Emergency ——深搜
题目要求:找到到达目标的最短路径条数,并计算能到达目标点最多的人数!!#include#includeusing namespace std;const int maxN=505;const int bignum=999999;class node{public: int to,next,cost;};class st{public: int cost,man,原创 2013-09-30 22:25:07 · 1042 阅读 · 0 评论 -
zoj 3204 Connect them//最小生成树
kru算法。#include#include#include#includeusing namespace std;int n,g[111][111];class node{public: int u,v,len;};int len;node edge[110000];int pre[111];void input(){ for(int i=1;i<=n;i原创 2012-03-10 19:39:13 · 585 阅读 · 0 评论 -
poj2186——Popular Cows
今天重温tarjan算法。代码:#include#include#include#include#includeusing namespace std;#define N 10005#define min(a,b) (a<b? (a):(b))class node{public: int u,v,next;};node g[N*5];int len,head[N];原创 2010-09-21 18:22:00 · 427 阅读 · 0 评论 -
poj2914——Minimum Cut//最小割Stoer_Wagner
题意:求最小割。起初用最大流算法求最小割,但没有枚举汇点,结果WA。后来,搜了报告,才知道不能用最大流算法求,会TLE。参考:Stoer_Wagner讲解 算法过程#include #include #include #include #include #incl原创 2011-07-14 15:54:36 · 554 阅读 · 0 评论 -
poj3352——Road Construction//最小割边
题意:最少添加多少条边,可以让图成为双向连通图。对trajan算法还没有了解深入,参考博客:http://www.cppblog.com/Icyflame/archive/2009/07/04/89227.html http://hi.baidu.com/buaa_babt/blog/item/4d9a16c934384e2cf9dc61da.html原创 2011-05-01 23:08:00 · 506 阅读 · 0 评论 -
poj3177——Redundant Paths//最小割边
<br />跟3352一模一样,不过,需加判重。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,r;#define maxn 5005bool map[maxn][maxn];class node{public: int to,next;};node g[maxn*5];int head[maxn],cnt;int dfn[maxn],原创 2011-05-01 23:56:00 · 481 阅读 · 0 评论 -
poj1330——Nearest Common Ancestors
LCA离线算法,递归求解。详见:http://blogold.chinaunix.net/u3/105033/showart_2238641.html#include#includeusing namespace std;int tree[10001][100],in[10001],p[10001];int cas,s,t;int n,q1,q2;bool vis[10001];void Make_Set(int t){ p[t]=t;}int Find(int原创 2011-04-28 23:24:00 · 504 阅读 · 0 评论 -
hdu1269——迷宫城堡
以前用tarjan算法做过一次,不过,对于新学的Kosaraju算法,又再练一次!杯具又发生,今天第二次数组开小了 真是自己,活该贡献一次re!#include#includeint n,m,k,cnt;struct node{ int v,next;}g1[100005],g2[100005];int head1[10005],head2[10005],index1,index2,f[10005];bool vis[10005];void add(int u,int原创 2010-12-03 20:42:00 · 539 阅读 · 0 评论 -
poj2553——The Bottom of a Graph
<br />这道题,题目对我来说,比较费解。好在大哥提醒之后,终于明白它想让我们干什么了!<br />题意:<br /> sink点的定义:如果点v到点w可达,那么点w到点v也是可达,如果对于图中每个顶点w均成立,则v点称为sink点。对于图中所有的sink点的集合,称为bottom,本题就是要求出给定图的bottom集。<br />而且,注意的是,求完强连通分量后检查每一条边(u,v),如果u和v属于两个不同的强连通分量,则u所在的强连通分量被排除。最后剩下的强连通分量即为所求!<br />#原创 2010-09-20 01:26:00 · 521 阅读 · 0 评论 -
pat1064 Complete Binary Search Tree (30)——递归
思路:先将数组排序,每次计算每个二叉点的左孩子点数,并维护好[left,right] 区间。#include#includeusing namespace std;const int maxn =1005;int n,a[maxn],ans[maxn];int cmp(const void *a,const void *b){ return *(int *)a-*(int原创 2013-10-05 01:57:10 · 1692 阅读 · 0 评论