图论
文章平均质量分 78
bubbleoooooo
这个作者很懒,什么都没留下…
展开
-
poj3463Sightseeing(最短路条数+次短路条数)
//poj 3463//次短路长度为最短路长度+1//最短路条数+次短路条数//分四种情况更新,练习了dijstra的更新//路条数用加法原理更新#include#include#include#includeusing namespace std;const int N=10100,M=100100;const int INF=0x3fffffff;#define clr原创 2015-07-27 17:18:36 · 465 阅读 · 0 评论 -
强连通分量总结
1主要写两个算法1.1强连通分量之Korasaju这个算法主要依赖的是图G与图G的转置强连通分量是一样的。具体证明先不考虑了(既是强连通分量,正向可以到达,反向一定也可以到达)。实现过程1. dfs原图G,并且记录结束时间(后序)。后序越大,为相对的根节点。(先这样理解)2. 给后序节点从大到小排序。3. 依次取后序大的节点在G的转置图上进行dfs,跳原创 2014-08-02 22:31:23 · 3273 阅读 · 5 评论 -
codeforces543B. Destroying Roads(暴力枚举bfs)
//暴力枚举所有点为起点的最小值//然后枚举每段是否为重叠区域。//之前想枚举每一小段,发现很麻烦,其实重叠的区域肯定只有一段,因为如果有两段,那么这两段一定是由最短的路连接的,实际还是一段。//所以枚举一大段即可import java.io.*;import java.util.*;public class cf { FastScanner in; final in原创 2015-08-03 22:12:07 · 545 阅读 · 0 评论 -
poj3635 Full Tank?(spfa+dp)
//package project1;//可以先不用考虑加油//只考虑到这个点剩余油量为j的最小花费//那么我们可以按照最短路的方式来更新//然后再在这个点统一加油//一升一升的更新,因为j-1是最优的,用j-1更新的j也一定是最优的。//因为要么不加油,要么加的油量肯定大于等于1升//如果j-1不是最优,那么少加一升的适合肯定会更新的,import java.io.*;impo原创 2015-07-31 16:41:20 · 460 阅读 · 0 评论 -
图论之2-sat模板
#include#include#include#include#include#includeusing namespace std;int n;const int maxn=2011;struct Node{ int s,e;}Tim[2*maxn];vectore[2*maxn];vectore2[2*maxn];vectorans;stackst;原创 2015-07-18 14:02:38 · 475 阅读 · 0 评论 -
图论之离线lca模板
#include #include #include #include using namespace std;#define MEM(a,b) memset(a,b,sizeof(a));const int N=100010;int n,m;struct Edge{ int u,v,w,next;}edge[2*N],Q[N];int fa[N],dis[N];原创 2015-07-18 14:05:51 · 426 阅读 · 0 评论 -
图论之树链剖分模板
#include #include #include #include using namespace std;#define MEM(a,b) memset(a,b,sizeof(a));int n,m,s;const int maxn=100010;struct Node{ int u,v,w,next;}e[maxn],edge[2*maxn];int cnt;原创 2015-07-18 14:08:05 · 435 阅读 · 0 评论 -
poj3621 最优比例生成环
//给出一个有向图,问求一个回路,使得回路上的点权之和/边权之和 最大//01分数规划//首先可以证明最优解一定是一个单独的环。//设大环套小环最优,大环为花费x1,收益y1,小环为花费x2,收益y2,重叠部分花费x3,收益y3//那么大环套小环花费x1+x2,收益y1+y2-y3,可以推出(y1+y2-y3)/(x1+x2)要么小于y1/x1,要么小于y2/x2//则最优解一定是一个单原创 2015-07-28 17:01:08 · 466 阅读 · 0 评论 -
poj3613Cow Relays (经过n条边的最短路)
//poj 3613//求经过n条边的最短路//此题让我更深入的了解了最短路的floyed算法//首先对于一个图的可达矩阵A而言(可达为1,不可达为0),A表示是否直接可达。//A*A表示是否中间经过一个点k可达(因为是累加所有情况,只要有一个k可达,数字大于1,即为可达)。//那么我们求的这个数字除了表示是否可达,有没有别的含义呢?//在矩阵乘法过程中,我们做的累加实际上就是加法原理原创 2015-07-27 22:29:32 · 1651 阅读 · 0 评论 -
poj2499 Remmarguts' Date 第K短路(spfa+A*)
//poj 2449第K短路//spfa + A*#include#include#include#includeusing namespace std;const int N=10100,M=100100;const int INF=0x3fffffff;int cnt;struct Node{ int u,v,w,next;}edge[2*M];int head原创 2015-07-27 15:56:54 · 442 阅读 · 0 评论 -
hdu 5348 MZL's endless loop(15多校第五场1006) 欧拉路
//15多校第五场1006//hdu5348 MZL's endless loop//若图中都是偶点,那么一定符合条件//若有奇点,我们的目标就是消除奇点。//从奇点出发,终止于一个奇点变为偶点的位置//奇点除去一条边变为偶点//从奇点一直出发直到图中都是偶点,这样直接跑欧拉回路即可。//要证明//1.从奇点出发只会使奇点变成偶点,不会改变偶点//2.从奇点出发一定会令图中原创 2015-08-05 20:44:05 · 494 阅读 · 0 评论