
图论。
文章平均质量分 70
natsuyu
这个作者很懒,什么都没留下…
展开
-
学习匈牙利算法ing
先马一发BFS的实现(更优)queueQ;intprev[__maxNodes];intHungarian(){ intans=0; memset(matching,-1,sizeof(matching)); memset(check,-1,sizeof(check)); for(inti=0;i<nu原创 2015-03-28 13:08:24 · 407 阅读 · 0 评论 -
CCF 无线网络【最短路】
我就是脑子被驴踢了之前才做不出来的。。呵呵哒因为要求转换的最少,所以如果两个路由器之间能架构网络,那么距离就是1,然后如果之间可以建立网络但是k的个数超了也是不可以纳入更新的。#include #include #include #include #include #include using namespace std;#define maxn 220#define ll原创 2015-09-13 11:53:37 · 707 阅读 · 0 评论 -
POJ 1330 最近公共祖先LCA_Tarjan 【水】
最近做题做到,顺便复习一下。。。23333#include #include #include using namespace std;#define maxn 10010int head[maxn],fa[maxn],vis[maxn],is[maxn];int que[2],ans,top;struct node{ int h,next;}line[maxn];原创 2015-09-08 15:29:46 · 334 阅读 · 0 评论 -
HDU 5266 【tarjan--水】
给你一棵树,然后给m次询问,每次问两个节点的最近公共祖先是多少。。。显然不能依次查找的嘛。。一定要离线。。然后公共祖先就用tarjan啦。。。就是这样。。也是个模板题。好像没有什么坑点。。。1A的。。。duang#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #inc原创 2015-06-15 11:29:40 · 452 阅读 · 0 评论 -
HDU 1285 【简单拓扑】
这道题做的自己心烦意乱!本来想找一种快一些的方法。。结果把自己搞的晕头转向。。。自己一直坑的一个地方。用邻接表的话其实不用考虑重边,因为你在删点的时候一定会删掉重边,并不用担心。我是每次找到一个入度为0的点的时候进行更新后却没有break,还是继续循环,这样结果就会出错,可能在这个循环中有两个入度为0的点,但是我可能更新后也出现了入度为0得点,然后答案的顺序就错了。。。#include原创 2015-06-04 21:18:45 · 494 阅读 · 1 评论 -
HDU 4514 【非联通无向图判环,树直径】
题目很明显是判环+树直径。然后自己有这么几个坑点。第一是没有搞清楚tarjan判的是有向图是否有环,无向图判环要用并查集。第二是没想到图可能是不连通的,需要循环寻找每棵树进行直径的寻找。第三是在找直径上的dfs上有错。。。恩,然后就是手动扩栈了一下。#pragma comment(linker, "/STACK:102400000,102400000")#include #in原创 2015-06-04 12:38:33 · 733 阅读 · 0 评论 -
HDU 2586 【LCA-Tarjan-模板】
模板题。利用DFS的时候,由于是类似于树的后序遍历,所以处理到每个根节点的时候,他的子树已经处理完毕了。如果子树上有一个节点是被询问的节点,如果对应的另一个被询问节点也在这颗子树上,那么一定能找到,并且一定是正解。最近的根节点就是最先遍历到的那个节点的祖先节点(已经通过并查集压缩)。然而这道题也搞了好久,原因是我自己懒。。然后对于并查集和Tarjan还不是很熟。。恩,然后这道题需要扩栈原创 2015-05-15 16:01:48 · 435 阅读 · 0 评论 -
POJ 1330 最近公共祖先LCA_Tarjan 【水】
最近打算狂撸一下图论和数据结构的题。当是复习数据结构!但是每天都感觉好困。。。。QAQ。。。。这就是到裸的CLA。。。。并且只查询一次,所以难度降低了很多。如果是二叉树还有其他方法。Tarjan的思想觉得自己没有太明白,理解的时候不是很。。。恩。#include #include #include using namespace std;#define maxn 1原创 2015-05-14 21:32:04 · 521 阅读 · 0 评论 -
ZOJ 3847 AC自动机+dp 【MLE】
题意:给你一个带字母的地图,给你n个字符串,要求走完任意一串字符串的最小步数。走的时候碰到的字母必须要收纳至少一个。我我我。。。。。学AC自动机的时候会很奇怪的MLE掉,觉得和模板都是一毛一样的了。。。!!!所以这里也是。。。但是这个坑拖得有点久了,所以先放在这里吧,,真的要死掉了!!怎么会MLE呢???!!!#include #include #include using na原创 2015-05-02 12:55:43 · 548 阅读 · 0 评论 -
hdu 1281 二分图-匈牙利算法
这这这。。。 稍微感受一下建图的不一样吧吧吧。。。原先说二分图匹配可以解决n皇后问题,原来是这样用的。。。把行列对应起来,由于是匹配,所以不会出现每行或者每列出现重复的情况。这道题也是,先用匈牙利算出最大匹配,然后挨个删边,看哪个删完之后边数变少了,那就是他啦!!嗯,注意初始化。#include #include #define maxn 110int girl[maxn],原创 2015-04-01 13:28:05 · 382 阅读 · 0 评论 -
POJ 1325 二分图匹配-匈牙利算法
又是个模板题,,不打算敲了,讲下自己的想法。刚开始的时候不知道怎么建图,原先想的是把任务和机器的mode[0,n+m)进行连接,(因为任务要全部完成)。但是发现这样不对啊,题目求的是最小的任务数。如果这样建图,根本求不出来。后来看到题解说是一边是A,一边是B,舍弃掉0后,建图。这样一想觉得开朗一些,这样即求最小点覆盖(全部边覆盖)。然后就开始想着为什么最大匹配等于最小点覆盖。证明需要两点:原创 2015-04-01 11:12:40 · 480 阅读 · 0 评论 -
poj 2446 二分图匹配,匈牙利算法
给一个m*n的棋盘,然后挖掉p个格子,叫你用1*2的砖块来覆盖棋盘,问是否能完全覆盖。好吧,,虽然知道是二分图,但是看到后在想线段树能不能做。。。。。原先有个贴小广告的线段树的题,不过忘了(QAQ捂脸)。建图,首先,对于一个点来说,四个方向相邻的点都是可以匹配的。然后,用黑白点染色的方法把图分成两部分。嗯。#include #include #define maxn 40int原创 2015-03-31 15:06:32 · 478 阅读 · 0 评论 -
poj 1469 二分匹配——匈牙利算法
哭晕在厕所。。。。。心想着这么简答的题好歹能过的吧,先来一发是T,然后想了想用了scanf,然后又进行了一点剪枝,交一发,WA了。。。。。于是表示不能理解,检查过后发现。。。。N,P输入搞反了呀。。。。呵呵哒。就是裸的匈牙利算法。。。。看了一篇趣讲算法的博客,于是整个人都不好了。。。girl什么的就无视吧。#include #define maxn 310int map[maxn][m原创 2015-03-30 21:57:12 · 481 阅读 · 0 评论 -
poj 1904 Tarjan
囧囧的。。。本来想了解下二分图匹配的,所以去搜HDU上的题,看到一道说是二分匹配的题(hdu 4685),然后看了之后说和POJ 1904很像,由于代码看不懂所以就去翻了POJ1904,然后发现是用强连通做的。。于是我又去看了Tarjan。。。然后当我回过头来。。。二分匹配呢。。。*******************************************其实也是初初涉猎图论,所原创 2015-03-26 23:30:47 · 520 阅读 · 0 评论 -
HDU1530 【最大团 水】
0 0.。。。。。。最大团的定义说实话。。。每过一阵子就忘了。。。首先---团,每个顶点,每条边都是属于给定的图的。并且里面每个顶点都相连 ----最大团,就是顶点数最多的团#include #include #include #include using namespace std;#define maxn 55int a[maxn][maxn],vis[原创 2015-12-29 23:39:26 · 395 阅读 · 0 评论