
Graph
文章平均质量分 59
E_Windrunner
这个作者很懒,什么都没留下…
展开
-
UVa 11624 Fire!
谁能帮我看看为什么第一份代码是AC,而第二份是WA呢- -!,就改了起火时间bfs那个判断条件而已AC#include #include #include #include #include #include #include #include #include #include #include #include #define MP make_pair#d原创 2013-05-31 12:16:13 · 703 阅读 · 0 评论 -
POJ 1041 John's trip
欧拉回路,基础题,但我做得那叫一个乱。。这道题只要把边和顶点的概念颠倒着想就可以了#include #include #include #include #include #include using namespace std;const int maxN=2000;int maX,degree[maxN],st[maxN],top,map[maxN][maxN];原创 2012-11-10 14:00:26 · 506 阅读 · 0 评论 -
POJ 1087 A Plug for UNIX
二分图匹配,主要在于建图,貌似建得有点丑。。把能插座X上能插入的插头(包括通过转化器的)通过dfs全找出来,图就建好了,我是用map将字符串映射成数组下标的。二分图一边是插座,一边是插头。#include #include #include #include #include #include #include using namespace std;const i原创 2012-11-11 12:45:58 · 327 阅读 · 0 评论 -
POJ 1144 Network
假若在删去顶点v以及和v相关联的各边之后,将图的一个连通分量分割成两个或两个以上的连通分量,则称顶点v为该图的一个割点。生成树为从根结点出发深度优先搜索遍历图,未遍历到的边为虚边。割点判定:(1)若生成树的根有两棵或两棵以上子树,则此根结点必为割点(2)若生成树中某个非叶子结点v,其某棵子树的根和子树中的其他结点均没有指向v的祖先的回边,则v为割点具体请看数据结构课本。#i原创 2012-11-11 20:33:33 · 355 阅读 · 0 评论 -
HDU 1983 Kaitou Kid - The Phantom Thief (2)
这道题是看题解的。。。自己写的记录路径陷入死循环,搞不明白。。所以去看题解了,题解是将整条路径记录在一个数组里,而我是记录上一个节点。。。以后回来看看哪错了AC代码#include#include#include#include#include#include#includeusing namespace std;struct Point{ int x,原创 2012-10-28 17:10:01 · 337 阅读 · 0 评论 -
HDU 2579 Dating with girls(2)
bfs。。。#include#include#include#include#include#include#includeusing namespace std;const int maxN=110;char map[maxN][maxN];int n,m,dx[]={1,-1,0,0},dy[]={0,0,1,-1},k;bool vis[maxN][maxN][原创 2012-10-28 13:27:42 · 347 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone
dfs+剪枝,若当前坐标到终点的最短距离的奇偶性与剩余可走步数的奇偶性不一样时(自己画一下图就明白了,不同的到终点的路径的步数是以偶数步增长的),dfs结束,另当最短距离大于剩余可走时间时当前dfs也结束。#include#include#include#include#include#include#includeusing namespace std;int n,m,k原创 2012-10-29 22:19:22 · 246 阅读 · 0 评论 -
HDU 1732 Push Box
bfs暴搜,重点在于记录状态与判重#include#include#include#include#include#include#includeusing namespace std;struct Point{ int x[4],y[4],step; Point(int *a,int *b,int n){ step=n; f原创 2012-10-28 12:32:18 · 509 阅读 · 0 评论 -
HDU 1015
#include#includeint sum,len,step,vis[30],flag,tar;char s[30],ans[30],anss[30];void dfs(){ int i,j,t; if(step<5) { for(i=0;i<len;i++) if(!vis[i]) {原创 2012-03-06 12:13:48 · 610 阅读 · 0 评论 -
HDU 1016
#include#includeint n,ans[21],isprime[]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0},vis[21];void dfs(int step){ int i; if(step==n+1) { i原创 2012-03-06 12:14:30 · 1134 阅读 · 1 评论 -
POJ 1166 The Clocks
代码略丑。。已经懒得去改了,华丽丽的563ms。。。bfs暴搜,记录一下状态就行了。#include #include #include #include #define SZ(x) ((int)(x).size())#define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++原创 2012-11-16 23:01:24 · 304 阅读 · 0 评论 -
POJ 1149 PIGS
最大流。关键在于建图。注意:每次打开猪笼,重新分配猪的数目后,所有已打开的猪笼要重新关闭。把每位顾客当成一个结点,若笼子k曾经被之前某个顾客a打开过,当前顾客b又能打开笼子k,则容量cap[a][b]=inf,若当前顾客是第一个打开笼子k的人,则cap[0][a]=pigNum[k],其中以0为源点,n+1为汇点,易知每个顾客到汇点的边的容量为顾客想要购买猪的数目。至此,构图完成。#inclu原创 2012-11-18 12:52:20 · 262 阅读 · 0 评论 -
HDU 1104 Remainder
156ms,比其他人慢好多。。bfs暴搜#include#include#include#includeusing namespace std;const int maxN=2000010;int n,k,m,step;bool vis[maxN];string anstr;struct Node{ int n,k; string原创 2013-01-29 15:35:53 · 330 阅读 · 0 评论 -
HDU 2586 How far away?
用dfs和lca均可,贴上两份代码dfs#include #include #include #include #include #include #include #include #include #include #define ll long long#define MP make_pair#define PB push_back#define SZ(x)原创 2013-02-27 23:10:38 · 373 阅读 · 0 评论 -
HDU 3038 How Many Answers Are Wrong
这题也是看题解的。A到B之间的和可用k到B的和减去k到A-1的和代替(k#include #include #include #include #include #include #include #include #include #include #define ll long long#define MP make_pair#defin原创 2013-02-07 17:29:29 · 307 阅读 · 0 评论 -
HDU 3635 Dragon Balls
这题的并查集是看题解的,想不出怎么算转移次数,题解好像用的是并入的次序来计算的,这真没想到。。#include #include #include #include #include #include #include #include #include #include #define ll long long#define MP make_pai原创 2013-02-05 14:12:15 · 311 阅读 · 0 评论 -
HDU 1856 More is better
别人用的并查集。。我这又钻牛角尖了,硬是要用dfs,TLE了好几次才AC。。已经越来越依赖STL了。。#include #include #include #include #include #include #include #include #include #include #define ll long long#define MP make原创 2013-02-02 17:56:14 · 251 阅读 · 0 评论 -
HDU 1829 A Bug's Life
看别人都用并查集。。我用的是bfs#include #include #include #include #include #include #include #include #include #include #define ll long long#define MK make_pair#define PB push_back#defi原创 2013-01-31 20:49:22 · 365 阅读 · 0 评论 -
HDU 2821 Pusher
dfs#include #include #include #include #include #include #include #include #include #include #define ll long long#define MK make_pair#define PB push_back#define SZ(x) ((int原创 2013-01-31 19:50:38 · 467 阅读 · 0 评论 -
HDU 2616 Kill the monster
数据太弱,dfs水过。。#include #include #include #include #include #include #include #include #include #include #define ll long long#define MK make_pair#define PB push_back#define SZ原创 2013-01-31 20:10:27 · 354 阅读 · 0 评论 -
HDU 1426 Sudoku Killer
dfs,每次在?处尝试每个数字,若符合条件,则进行下一层dfs,知道找到足够的数字#include #include #include #include #include #include #include #include #include #include #define ll long long#define MK make_pair#de原创 2013-01-30 13:24:11 · 305 阅读 · 0 评论 -
HDU 2610 Sequence one
我用的是bfs。1046ms,这。。都倒数了。我偷懒用了set。而且c++的string里面居然没有逆置函数,我勒个去,还得自己写,最新的标准才支持从整型转成字符串(to_string)。。这。。#include #include #include #include #include #include #include #include #include #原创 2013-01-30 20:52:34 · 373 阅读 · 0 评论 -
HDU 1045 Fire Net
亮瞎。。。居然有人说数据水。。。尼玛WA了6次。。。#include#include#include#include#include#include#include#include#includeusing namespace std;int n,ans,N,a[20][20],cnt[20];char map[5][5];bool vis[5][5];void ch原创 2012-08-26 16:15:03 · 256 阅读 · 0 评论 -
HDU 1874 畅通工程续
无向图最短路,邻接表+优先队列#include#include#include#include#include#include#includeconst int maxn = 210;const int maxm = 1010;const int inf = 0xfffffff;int v[maxm*2],u[maxm*2],w[maxm*2],d[maxn],ne原创 2012-08-27 23:00:43 · 292 阅读 · 0 评论 -
HDU 1217 Arbitrage
Floyd#include#include#include#include#include#include#include#includeconst int maxn = 30;const int maxm = 1010;double d[maxn][maxn];using namespace std;int main(){ int n,m,i,c原创 2012-08-27 23:53:28 · 229 阅读 · 0 评论 -
HDU 1535 Invitation Cards
Dijkstra+优先队列+反向建图+邻接表#include#include#include#include#include#include#include#includeconst int maxn = 1000010;const int inf = 0xffffff;struct Edge{ int u,v,w;}e[maxn];int d[max原创 2012-08-28 00:45:14 · 362 阅读 · 0 评论 -
HDU 1116 Play on Words
欧拉回路+并查集(判断图是否连通,被这坑了。。)#include#include#include#include#include#include#include#includeusing namespace std;int p[30];int find(int x){ return x==p[x]?x:(p[x]=find(p[x]));}int mai原创 2012-10-09 23:56:15 · 274 阅读 · 0 评论 -
HDU 2119 Matrix
这题是二分图匹配,真没看出来- -!,看了解题报告才恍然大悟。。果然我这二分图匹配没理解透啊~~~将行数当成二分图中的一部分,列数当成另一部分,则图中为1的点可以是二分图两部分各出一个顶点所组成的一条边,求覆盖这些边最少需要多少个顶点,即最小顶点覆盖问题,又:最小顶点覆盖==最大匹配,至此此题就可以解出了~~从没想过可以这样建图,学习了~~~#include#include#inc原创 2012-09-05 23:01:35 · 310 阅读 · 0 评论 -
HDU 1083 Courses
二分图匹配基础题,题意为,有p门课程,然后总共有n个学生去选修,学生可以选修大于或等于0门课,求是否能够选出p个学生,其中每个学生代表一门课程(要使该学生代表一门课程,则其必须选修了该门课程)。这是一道裸的求最大匹配的二分图题目。#include#include#include#include#include#include#include#include#includeu原创 2012-09-06 00:19:03 · 339 阅读 · 0 评论 -
HDU 2063 过山车
二分图匹配基础题。。。#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 550;const int maxm = 1010;int numBoy,numGirl,m,v[maxm],first[ma原创 2012-09-05 21:54:13 · 324 阅读 · 0 评论 -
HDU 1532 Drainage Ditches
最大流基础题,一开始用邻接表做,wa了,最后看discuss发现数据可能存在重边,于是乖乖地改回了邻接矩阵,AC了,重新看了一下lrj的白书,总算是把最大流的那增广路算法搞明白了,嘿嘿~#include#include#include#include#include#include#include#include#includeusing namespace std;c原创 2012-09-04 18:04:32 · 321 阅读 · 0 评论 -
POJ 1236 Network of Schools
调了3个小时,我勒个去。。下面是转载自http://www.cppblog.com/kuangbin/archive/2011/08/25/154304.html?opt=admin的内容强连通分量缩点求入度为0的个数和出度为0的分量个数题目大意:N(2各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网原创 2012-09-03 22:42:12 · 369 阅读 · 0 评论 -
POJ 2186 Popular Cows
邻接表建图,强连通分量缩为有向无环图(DAG)中的一点,若DAG中出度为0的个数有1个以上,则解不存在,若出度为0的点有1个,则解为该点强连通分量中包含的点的个数#include#include#include#include#include#include#include#include#includeusing namespace std;const int max原创 2012-09-04 01:44:04 · 255 阅读 · 0 评论 -
POJ 2386 Lake Counting
题略水- -!#include#include#includechar s[110][110];bool vis[110][110];int n,m;void dfs(int x,int y){ if(x=0&&y=0&&s[x][y]=='W'&&!vis[x][y]) { vis[x][y]=true; dfs(x+1,y)原创 2012-07-18 21:58:30 · 240 阅读 · 0 评论 -
POJ 1190 生日蛋糕
剪枝……#include#include#include#includeconst int INF=100000000;int n,m,cnt[50],flag,anss,ans;void dfs(int c,int l,int lastr,int lasth){ int r,h,tmp,minr,minh,i; if(l==0) {原创 2012-07-19 00:36:29 · 319 阅读 · 0 评论 -
HDU 1072 Nightmare
悲催用dfs时间效率那么差,用bfs貌似也行- -!#include#include#include#includeconst int inf=1<<30;int n,m,map[10][10],sx,sy,ex,ey,time[10][10],dx[]={-1,1,0,0},dy[]={0,0,-1,1},ans[10][10],min;void dfs(int x,int原创 2012-06-11 14:50:25 · 264 阅读 · 0 评论 -
HDU 1384 Intervals
差分约束。。spfa求最长路#include#include#include#include#include#include#include#includeconst int maxn = 50010;const int inf = 0xffffff;struct Edge{ int u,v,w;}e[maxn*4];int d[maxn],next[原创 2012-08-28 22:54:58 · 331 阅读 · 0 评论 -
HDU 1142 A Walk Through the Forest
为毛我这代码跑了453ms - -!坑爹的一道题,我看清了题目是要求一条渐进于终点的路径,但没想到其中任意两点之间都必须存在一条道路,你妹。。脑残了根据题目描述,若a能走到b,则应满足a到house的最短路长度大于b到house的最短路长度dijkstra+记忆化搜索#include#include#include#include#include#include#i原创 2012-10-13 14:06:55 · 245 阅读 · 0 评论 -
HDU 1175 连连看
最近做题都是上百ms的节奏。。。bfs暴搜。#include#include#include#include#include#includeusing namespace std;const int maxN=1010;const int inf=1010;struct Point{ int turn[5],val;}p[maxN][maxN];int原创 2012-10-13 15:17:23 · 276 阅读 · 0 评论 -
HDU 1372 Knight Moves
#include#include#include#include#includeusing namespace std;const int inf=1<<30;int n,a,b,k[210],dx[8]={-1,-1,1,1,2,-2,2,-2},dy[8]={2,-2,2,-2,-1,-1,1,1},vis[10][10],ans[10][10],sx,sy,ex,ey,flag原创 2012-06-11 13:23:31 · 226 阅读 · 0 评论