![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
文章平均质量分 73
图论
陌上花开 ~
越努力,越幸运(研究生在读)
展开
-
L3-007 天梯地图(最短路)
L3-007 天梯地图 (30 分)思路:2遍Dijkstra,要记录主要信息和次要信息,还有前驱结点,递归寻找路径即可,在此是用了邻接矩阵存图,较为方便代码:#include<bits/stdc++.h>#define f(i,a,b) for(int i=a;i<b;i++)#define ff(i,a,b) for(int i=a;i<=b;i++)#define ll long long#define debug(x) cout<<#x<&l原创 2022-02-04 00:34:54 · 401 阅读 · 0 评论 -
G.真简单题(最短路)I.假简单题(三进制枚举)
真简单题思路:这道题在比赛的时候WA了很多发,一直以为dfs漏掉了什么细节,我的做法是对于 i - a[i] 和 i + a[i],如果可以到达,就连一条边然后,对于一个点去类似bfs那样dfs,当有奇偶性不同的解的时候,就更新结果,结果RE了,贴上代码:运行时错误的代码:#include <bits/stdc++.h>#define closeSync ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)#define multiCase原创 2021-08-23 01:17:48 · 140 阅读 · 0 评论 -
Code Names(二部图最大匹配问题)
Code Names题意:你得到了单词集W,一组N个单词,它们是彼此的相同字母异序词,任何单词中都没有重复的字母。一组单词S⊆W称为“无交换”,指如果无法通过交换x中的一对字母(不一定相邻)将单词x∈S转换为另一个单词y∈S。你需要从给定的单词集W中找出最大的无交换集S的大小。思路:每一对单词都有着相同的字母但是字母顺序不同,类似与排列,排列具有奇偶性——等于逆序数的奇偶性,交换(任何)两个字母都会改变奇偶性。因此,如果两个词具有相同的奇偶性,它们不能相邻;如果两个词具有不同的奇偶性,它们可能相原创 2021-03-08 11:03:06 · 476 阅读 · 0 评论 -
二叉搜索树结构定义及建立
题意不赘述:L2-004 这是二叉搜索树吗? (25分)知识点:基本二叉树的构造+遍历(先序,后序),二叉搜索树(BST)构造,vector操作,指针与引用规律:用BST的先序(ar1)构造出来的BST的先序(ar2)满足ar1==ar2思路:直接用给定的整数键值序列来构造BST,之后求BST和其镜像的先序和后序,其中递归求镜像的时候将leftchild和rightchild互换位置注......原创 2020-03-29 14:01:17 · 1610 阅读 · 0 评论 -
基础图论算法模板(最短路,最小生成树,二分图)
邻接表示意图:题1:有向图的拓扑序列代码:#include <iostream>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int N = 1e5 + 10;int e[N],ne[N],h[N],idx;int d[N],top[N],cnt=0;int n,m;// e,ne,h,idx 邻接表模板// d 代表原创 2021-01-26 14:19:16 · 235 阅读 · 0 评论 -
CF1151E(Number of Components,最大独立集)
首先了解最大团,团,最大完全子图,完全子图的定义如下:最大团补图的定义图G的补图,通俗的来讲就是完全图KnK_{n}Kn去除GGG的边集后得到的图Kn−GK_{n}-GKn−G在图论里面,一个图G的补图(complement)或者反面(inverse)是一个图有着跟G相同的点,而且这些点之间有边相连当且仅当在G里面他们没有边相连最大独立集的定义:如下:最大独立集[百度百科]无向图的最大团/最大独立集 算法总结题意:有m个人,n组询问,每次询问若为1,则可以将当前账户名原创 2021-01-25 12:32:25 · 130 阅读 · 0 评论 -
相遇问题(图的dfs)
【问题描述】贝丽斯和她的姐姐艾丽斯想从谷仓走到她们最喜爱的牧场。她们在同一时间离开谷仓,也在同一时间到达最喜爱的牧场。整个农场是一个有N个牧场,1号牧场就是谷仓,N号牧场是她们最喜爱的牧场。整个农场是建在一个山坡上的,如果X<Y,则代表x号牧场比Y牧场要高。有M条路径连接一堆牧场。然而,由于每条路径都很陡,每条路只能向下山的方向走。比如,一条连接5号和8号农场的路只能从5走到8而不能反过来,因为那样就是向山上走了。每对牧场之间最多有一条路径,故M≤N(N-1)/2。贝丽斯和艾丽斯可能需要不同的时原创 2021-01-25 10:44:31 · 708 阅读 · 0 评论 -
三种存图方法
邻接矩阵容易存储,修改,处理重边和查询。但是对于稀疏图来说非常非常浪费空间挖地雷dp:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int t,ans;int a[205],g[205][205],pre[205],f[205];void print(int x){ if (pre[x]==0){ printf("%d",x);原创 2020-09-18 20:18:38 · 551 阅读 · 0 评论 -
SPFA,Dijkstra模板(邻接表)
problem:P4779 【模板】单源最短路径(标准版)code:#include<bits/stdc++.h>#define maxv 100005#define maxe 200005#define fox(i,a,b) for(int i=a;i<=b;i++)using namespace std;int ver[maxe],edge[maxe],nxt[maxe];int v[maxv],d[maxv],head[maxv];int cnt,n,m,s;p原创 2020-06-28 12:49:53 · 181 阅读 · 0 评论 -
拓扑排序(邻接矩阵,邻接表,附4例题)
目录拓扑排序定义例题1例题2邻接矩阵实现板子例题1解法邻接表实现板子例题1解法链式前向星实现板子例题1解法例题2解法备注:本文所参考优秀文章拓扑排序定义对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集原创 2020-06-28 23:28:58 · 3846 阅读 · 0 评论 -
1003 Emergency易错点标注(Dijkstra)
题目不赘述:1003 Emergency (25分)第一次写这道题的时候,板子记忆不熟,错误频出,在此做出标注代码好丑,别喷emm#include<bits/stdc++.h>#define LL long long#define fo(i,a,b) for(int i=a;i<b;i++)#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)using namespace std;const int m原创 2020-06-23 23:15:51 · 228 阅读 · 0 评论 -
Dijkstra处理第二标尺
注: 本文代码部分参考算法笔记邻接矩阵实现Dijkstra//邻接矩阵实现Dijkstra const int MAXV=1000;//最大顶点数const int INF=1e9; int n,G[MAXV][MAXV];int d[MAXV];//distance bool vis[MAXV]={false};void Dijkstra(int s){//s:start point fill(d,d+MAXV,INF); fill(G[0],G[0]+MAXV*MAXV,原创 2020-06-22 13:24:32 · 137 阅读 · 0 评论