图论
文章平均质量分 62
CN_swords
这个作者很懒,什么都没留下…
展开
-
【图论】拓扑排序+优先队列
#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;//#pragma comment(linker, "/STACK:102400000,102400000")const doub原创 2017-07-01 17:53:37 · 304 阅读 · 0 评论 -
【二叉树】前中序求后序,中后序求前序
前中序求后序#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#include<deque>#include<vector>#in原创 2017-07-02 12:37:35 · 372 阅读 · 0 评论 -
【Lca 在线st算法】hdu 2586 How far away ?
LCA 在线st算法 题意: 对于一个图,n(<=40000)个点,给出n-1条边(u,v,w,), m(<=200)个询问给出两点,问其最短距离 题解: LCA问题(求最近公共祖先问题),在线算法(对于每个询问得出答案,相对离线算法需要得到所有询问后一次性给出答案)。 以任意一点作为根节点,两点最短距离为,两点分别到根节点的距离和减去两倍的最近公共祖先到根节点的距离。 st算...原创 2017-07-08 10:32:13 · 285 阅读 · 0 评论 -
【Lca 离线Tarjan算法】hdu 2586 How far away ?
LCA 离线Tarjan算法题意: 对于一个图,n(<=40000)个点,给出n-1条边(u,v,w,), m(<=200)个询问给出两点,问其最短距离。Tarjan 离线求LCA:离线算法(必然先存所有询问);dfs:1. 遍历到当前点,创造一个当前点的集合2. 对于遍历完的子树,将其根节点的集合加入其父节点所在的集合。3. 对于询问的两点,遍历到一点,如果另一点已经被遍历,那么另一...原创 2017-07-08 22:17:17 · 238 阅读 · 0 评论 -
【Lca 倍增】codeforces 832D Misha, Grisha and Underground
Link:http://codeforces.com/problemset/problem/832/D/*codeforces 832D题意:每天 从a b c 三点选择s f t,使s到f和t到f 经过的公共点个数最多。求每天的经过公共点最多个数。题解:其实就是求a b c都能到的交叉路口,到abc最长的距离。abc的交叉路口可以是lca(a,b),lca(b,c),lca(a,c)但是...原创 2017-07-27 09:45:08 · 876 阅读 · 0 评论 -
【欧拉图判断】HDU 1878 欧拉回路
并查集 + 欧拉回路判断//#include <bits/stdc++.h>//#pragma comment(linker, "/STACK:102400000,102400000")#include<iostream>#include<cstdio>#include<cstring>#include<stack>#incl...原创 2018-02-27 12:00:35 · 272 阅读 · 0 评论 -
【拓扑排序+DFS】框架堆叠
wa//#include <bits/stdc++.h>//#pragma comment(linker, "/STACK:102400000,102400000")#include<iostream>#include<cstdio>#include<cstring>#include<stack>#include<map..原创 2018-02-27 10:39:14 · 397 阅读 · 0 评论 -
CodeForces 698B Fix a Tree
题意:给你n个数,第i个数代表点i连向点a[i],将这副图变成树,求最小改变边的数量,以及改变后的对应量。 题解:给出的n个数如果有一个点对应自己,那么这个环只有一个点,可以作为根。我们将有环的拆环,再接到根上。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>原创 2016-09-29 22:13:59 · 237 阅读 · 0 评论 -
六度分离 -(PAT)(hdoj 1869)
最近一直在做PAT的题,这里的题我觉得对初学者挺好的,有讲到算法,题又不难,刚可以熟悉初学的算法。 回去看了下题,找到一题 和 hdoj 基本一样的六度分离,但PAT上六度分离人数N(<=10^4),就不好于hdoj 1869一样用floyd或dijk做把。。。我就用了bfs和dfs,因为无法提交,正确与否也不知道哦。先附个 hdoj 1869的dijk吧 http://acm.hdu.edu.原创 2016-07-11 10:50:14 · 381 阅读 · 0 评论 -
【Prim 求次小生成树】HDU 4081 Qin Shi Huang's National Road System
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 此题题解转于他人博客,自己对博客代码稍加自己的Prim风格(注释里为原文代码风格),为了帮助读者理解,稍加代码运行结果图。 转于:http://blog.csdn.net/jarily/article/details/8883858/* *算法引入: *设G=(V,E,w)是连通的无向图,原创 2016-07-25 21:20:14 · 435 阅读 · 0 评论 -
【次小生成树 或 最小生成树】The Unique MST poj 1679
题目链接:http://poj.org/problem?id=1679 题意:给出连接边的两点和权值,求得最小生成树是否唯一,唯一输出最小生成树权值和,否则输出“Not Unique!”。题解1:第一种方法从最小生成树的形成过程来考虑,我们考虑 1.在现有最小生成树加入一个点的时候,我们找到两个及两个以上的最优点,会导致不唯一。 2.在加入一个点后,更新未选点到最小生成树最小距离时,我们更新的原创 2016-08-07 11:08:28 · 316 阅读 · 0 评论 -
【kruskal 求次小生成树存在】Is There A Second Way Left? (UVA 10462)
UVA 10462 题意:求连通图的最小和次小长度,三种情况:1.不存在最小 2.不存在次小 3.最小和次小不同。 题解:无法使用prim求次小生成树,因为可能有两个点有两个及以上权值,那么我们用prim会把大的权值覆盖掉,所以我们用kruskal求,怎么求呢?我们求出最小生成树后,把用过的边绕过,求最小生成树,如果存在则存在。我开始题意理解有误,我以为次小和最小相同是第2种情况。原创 2016-08-08 14:27:34 · 596 阅读 · 0 评论 -
【最小树形图】Command Network poj 3164
题意:求有向的最小生成树,没有输出“poor …”。 我也是初学最小树形图,我看了别人的博客和一些资料,对于我这样的新手来说,我觉得如果我不去一步一步琢磨他们的代码,还真难理解,一说明他们写的不够详细,对新手来说没办法一下理解。我从新手的角度来重新写一遍,以我的表达能力可能不能确保能让你们完全理解,将就下拉。最小树形图就是有向的最小生成树。 首先来想想,为什么我们没办法用prim,kruska原创 2016-08-11 20:46:57 · 254 阅读 · 0 评论 -
【Floyd】HUD 5418 Victor and World
/*状压dpVictor and World时间: 2017/02/24题意:一张无向图,求从1位置出发,每个点至少走一遍,再返回1点的最小花费。题解:先floyd处理出各个点之间的最小距离dp[i][j] 表示停留在i点的j状态的最小花费wa1,注意:边的赋值可能重复*/#include#include#include#include#include#include原创 2017-02-24 14:47:20 · 246 阅读 · 0 评论 -
【最短路】PAT 1003 Emergency(求最短路条数 和 第二关键词最大)
题意: n个城镇,给你初始所在城镇和要到达城镇,每个城镇有ai救援队(经过算通知到救援队),问在从起点到达终点 最短路的条数 和 最大通知的救援队人数。题解: dijsk变形#include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;const原创 2017-03-04 19:56:36 · 351 阅读 · 0 评论 -
【最短路】PAT L3-011. 直捣黄龙(求最短路条数,三个关键词优先,最短路路径)
#include #include #include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;const int N = 210;const double esp = 1e-6;int n,m;struct point{原创 2017-03-12 18:33:54 · 752 阅读 · 0 评论 -
【欧拉回路】poj 2230 Watchcow
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 10010;const int M = 50010;/* 题意:在欧拉图中求一条每条边经过两次的路径,可理解为双向的欧拉...原创 2018-02-28 10:45:21 · 219 阅读 · 0 评论