图论
phantompiupiupiu
这个作者很懒,什么都没留下…
展开
-
UVa Live4255
第一个有关拓扑排序的题目,光看题目很难想到这题是拿topo来做的。看了白书上的分析才知道拿topo来做,并且也用到了常用的连续和转化为前缀和之差的思想,然后奖前缀和标号作为图的结点利用大小+-来进行连接即可。然后由得大小关系的原因所建成的图,所以 每一层的topo得到可以入队列的入度为0的结点的时候,都可以将该结点进行赋值,然后最外层的肯定是最大值,每一层减一即可。这样做的话就不需要再让pre[0原创 2016-08-28 20:05:39 · 373 阅读 · 0 评论 -
HDU 1863 最小生成树
在学过了并查集之后 ,再看白书上的这个kruskal的写法,其实还是很简单的明了的。也是我写的图论里的最小生成树的第一个题目,可以作为模版啊#include#include#include#includeusing namespace std;int n,m;int u[5000],v[5000],w[5000],p[5000],r[5000];int cmp(const原创 2016-09-28 23:57:44 · 222 阅读 · 0 评论 -
POJ 3013
这个题目就是一个求最短路,然后保证整个图是一个连通图就好了,如果不连通的就表明了这个圣诞树是无法构成的,那么输出no answer,然后如果是连通的,在求出了所有点到1的最短路径的情况下,利用相乘累加的方式就可以求出答案了。#include#include#include#include#includeusing namespace std;typedef long long原创 2016-09-07 23:30:29 · 329 阅读 · 0 评论 -
POJ 3268 基本dijkstra
比较简单,没什么好说的,几乎就是模版题了。#include#include#include#include#includeusing namespace std;const int maxn=100010;const int INF=1e9;int n,m,x,a,b,c,d[maxn],vis[maxn];struct Node{ int d,u;原创 2016-08-25 16:32:03 · 209 阅读 · 0 评论 -
POJ 1201 差分约束
最近做了好几个差分约束了,本意是来学习图论的,没想到学到的都是这种利用图论来解不等式的方法了,23333,还是不错的。在此总结一下,首先差分约束的概念也方法可参考该博客http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 点击打开链接然后就是这个题参考了http://blog.csdn.net/u013480600/articl原创 2016-08-25 16:00:42 · 224 阅读 · 0 评论 -
POJ 1364 差分约束
解题的思路比较奇葩。第一次见到啊,也不知道别人是怎么看出来这种情况下就是差分约束也就是可以用到图论,表示真的好迷啊。看来对差分约束的概念还很差呢。。#include#include#include#include#includeusing namespace std;const int maxn=10005;const int INF=10000000;int n,m,si原创 2016-08-24 21:36:42 · 202 阅读 · 0 评论 -
POJ 3159 松弛操作 差分约束 SPFA
这个题的数据比较奇葩 SPFA里必须拿栈才能过,队列就过不了,而且在建图的时候最好不要拿vector也好像会超时,比较尴尬。#include#include#include#include#include#includeusing namespace std;const int maxn=150010;const int INF=0x3f3f3f3f;int n,m,u原创 2016-08-24 16:21:34 · 266 阅读 · 0 评论 -
POJ 3660
这个题就是一个floyd就可以了,不过在判断的时候要记得判断位置确定是他与其他的n-1头牛有了确定的关系可以是上或者下。 if(d[i][j]||d[j][i])#include#include#includeusing namespace std;const int maxn=4510;int n,m,a,b;bool d[maxn][maxn];//bool型比int少一原创 2016-08-24 14:31:16 · 163 阅读 · 0 评论 -
HDU 1317 一路wa到西天
简直是对自己无语啊,代码风格出了点问题,自己加了一些不应该加的东西,结果wa到没边了。这个题目就是需要考虑的就是正环的问题,还有就是是否1和n连通的问题。连通性考虑floyd算法即可。然后这个判断正环的问题就需要bellman_ford了,写这个的时候发现了其实bellman_ford不必按照模版上教的一定要初始化d为INF,其实是可以初始化为0,然后求最大路的。因为题目要求的是问的是是否原创 2016-08-22 20:51:02 · 455 阅读 · 0 评论 -
POJ 2387优化后dijkstra写法
这里尝试着用了优化后的写法,利用了优先队列对d值小的点进行优先选择为下一个结点进行操作。然后这里采用了图论学到的第二种写法struct Edge//第二种图的写法{ int u,v,w;};vectoredge;vectorG[maxn];void add_edge(int u,int v,int w){ Edge p; p原创 2016-08-22 13:09:47 · 232 阅读 · 0 评论 -
POJ 2387
初入图论的第一个题目,也就是一个简单的最短路的问题,提前学习了链式前向星,也就在前半部分写来练练手,其实用数组就可以实现了,忽略前面的,这个题的小坑就是可能会有重边,这样就需要在lend存储的时候进行判断来存储最短的uv之间的边即可了。#include#include#includeusing namespace std;const int maxn=2010;const int N原创 2016-08-22 11:27:51 · 188 阅读 · 0 评论 -
POJ 1112 WA到死
一路WA到死啊。这个题本身就比较有难度了,完全是给跪了,整体先是求补图,然后做二分染色,之后通过DP来求的最佳的分组状况。看下POJ 上的分析,和一些网上的代码才能明白过来,特别是二分染色 是第一次遇到啊,这个dfs的写法还是比较恶心的。这里的DP也是非常的难想成做可能不可能的这种01的DP值。首先,我们分析一下分组的要求:1、把所有的人分成2组,每组至少有1人;2、每组之间的人两原创 2016-10-06 10:32:28 · 706 阅读 · 0 评论