上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 23 下一页
摘要: 跟上一题差不多,就是输入的处理比较麻烦。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;#define MIN(a,b) ((a)<(b)?(a):(b))#define N 105int n,ns,nt,m;int g[N][N];int pre[N];void EK(int s,int t){ int u,v,maxflow=0; while(1) { queue<int>q; memset(pre,-1,sizeof( 阅读全文
posted @ 2012-07-27 17:35 BeatLJ 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 比较简单的网络流。需要注意的地方:1、数据中有重边;2、输入均为单向边。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;#define MIN(a,b) ((a)<(b)?(a):(b))#define N 201#define INF 0x3ffffffint n,m;int g[N][N];int pre[N];void EK(int s,int t){ int maxflow=0; int u,v; while(true) { q 阅读全文
posted @ 2012-07-27 17:34 BeatLJ 阅读(222) 评论(0) 推荐(0) 编辑
摘要: Description现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==>(x+1,y+1) 道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的. 左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现在 阅读全文
posted @ 2012-07-27 17:32 BeatLJ 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个无向连通图,求至少需添加几条边,使得原图双连通(不存在桥)。分析:用tarjan算法找桥,将所有不是桥的边的端点用并查集合并,这题以前写过,至于为什么可以用并查集来合并,可以参考以前那篇博客。需要注意的是,数据中有重边,在判桥时要注意。可以用一个矩阵存储边的数目,若某边数目大于1,则一定不是桥。View Code #include <stdio.h>#include <string.h>#define MIN(a,b) ((a)<(b)?(a):(b))#define N 1001#define M 2002int n,m,e;int g[N][ 阅读全文
posted @ 2012-07-26 22:48 BeatLJ 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题意:求一个有向图中所有满足以下性质的结点:从自身出发可达的点均能回到自身。分析:求的就是缩点后出度为0的强连通分量内的点。这题以前写过,当时用邻接表来存储的。今天又试了下矩阵存储,速度慢了一半……用矩阵存储时,要用char或bool,否则会超内存。View Code #include <stdio.h>#include <string.h>#define N 5001int n,m;char g[N][N],vis[N];int dfn[N],id[N],cnt;int dout[N];void dfs(int u){ vis[u]=1; for(int v=1;v& 阅读全文
posted @ 2012-07-26 21:10 BeatLJ 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个牛,已知这些牛之间的崇拜关系,崇拜关系是可以传递的,例如:a崇拜b,b崇拜c,那么a崇拜c。问有多少牛被其他所有牛崇拜?分析:根据崇拜关系建立有向图,已知同属于一个强连通分量的牛互相崇拜,通过求强连通缩点后,若出度为0的点只有一个,那么这一群牛就被其他所有牛崇拜,否则不存在被其他所有牛崇拜的牛。View Code #include <stdio.h>#include <string.h>#define N 10001#define M 50001int first[N],next[M],v[M];int rfirst[N],rnext[M],rv[M]; 阅读全文
posted @ 2012-07-26 20:17 BeatLJ 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个学生和p门课程,每个学生选修了p门课程中的一些,问能否找到p个课代表,一个人最多只能当一门课的课代表。分析:建立二分图,求最大匹配,判断最大匹配数目是否为pView Code #include <stdio.h>#include <string.h>#define N 301int g[N][N];int x[N],y[N],vis[N];int p,n;int path(int u){ int v; for(v=1;v<=p;v++) if(!vis[v]&&g[u][v]) { vis[v]=1; if(y[v]==-1 |.. 阅读全文
posted @ 2012-07-26 17:25 BeatLJ 阅读(148) 评论(0) 推荐(0) 编辑
摘要: DescriptionN个学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输。问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。问题2:至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。Input输入有多组样例,大约1000组。每组样例第一行包含两个整数N,M(2<=N<=100),N代表学校的个数,M代表边的个数(M<N*N)接下来M行,每行包含连个整数u,v,代表u可以向v单向发送数据。Output每组样例对应两行,分别是问题一和问题二的解。Sample 阅读全文
posted @ 2012-07-26 17:19 BeatLJ 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 今天本来是要参加集训队的中期测验的,但是因为要考场外,所以请了一天假,下面就记一下流水账。今天早上6点半就醒来了,平常一般都是7点醒的,可能潜意识里还是有点紧张吧。吃过早饭后,离去驾校的时间(10:30)还早,便看了一个差分约束系统的题,一开始死活TLE,看了discuss后才A的。此时已经9点了,然后在网上随便逛了逛就10点了,搭车到驾校后,看到公告黑板上写的是12点半集合,我hold不住了,还要等2小时,要不要回去呢?纠结了几分钟后我决定呆在驾校。快10点半的时候,我们同车的一个学员来了,他说是10点半还要练车,我当时就庆幸没回去,要不就悲剧了。练车的时候挺顺的,主要是强化一下细节。练完车 阅读全文
posted @ 2012-07-25 23:47 BeatLJ 阅读(240) 评论(2) 推荐(0) 编辑
摘要: 题意:给定一棵二叉树的先序遍历结点序列和中序遍历结点序列,求其后序遍历结点序列。树的结点不超过26。分析:由于遍历都是递归定义的,所以不难得到以下结论:树的任意子树的遍历结点序列一定是该树的遍历结点序列的一个连续子序列。有了这个结论后,我们的任务就是确定子树遍历结点序列的起点和终点,而这个可以根据preorder和inorder得到。例如,preorder的第一个结点是根,设为root,root这个结点会把inorder分为2部分(可能某部分为空),左边的就是左子树的中序遍历结点序列,右边的就是右子树的中序遍历结点序列,这样也就确定了左子树和右子树的结点数目,根据左右子树结点数目,就可得到左右 阅读全文
posted @ 2012-07-25 21:48 BeatLJ 阅读(839) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 23 下一页