• 2024-09-20深入探索:深度优先遍历与广度优先遍历的奥秘与应用
    在算法和数据结构的广阔领域中,图的遍历是一个核心且基础的概念,它支撑着众多高级算法和应用的实现。深度优先遍历(DFS)和广度优先遍历(BFS)作为图的两种基本遍历方式,不仅具有深刻的理论意义,还广泛应用于各种实际问题中。本文将更深入地探讨这两种遍历方式的原理、实现细节、性能
  • 2024-09-08【高阶数据结构】秘法(二)——图(一):图的基本概念和存储结构
    前言:今天我们要讲解的是数据结构中图的部分,这部分在我们实际生活中也是经常会碰到的,同时这部分也是数据结构中比较有难度的部分,这部分内容我会把它分为多章来进行讲解,今天我们先来讲解一下图的基本概念和存储结构目录一、图的基本概念1.图的定义2.术语解释3.图的分
  • 2024-07-13最短路问题
    最短路问题writeashortintroduce朴素做法writesomethingCode1Code多源最短路比较好于理解与编写的是Floyd算法。Code2#include<iostream>#include<iomanip>#include<string.h>usingnamespacestd;intn,m;intg[105][105];voidaddedge(intu,intv,int
  • 2024-07-09存图方式
    存图方式在进行图上的一些操作时,存图,是必要的前置操作。e.g.接下来的Code以这为测试:#input451213241434朴素做法邻接矩阵,便是一种简单的结构,使用bool类型为底,如果\(u\tov\)有边,\(a_{u,v}=1\),否则\(a_{u,v}=0\)。Code1#include<iostream>usin
  • 2024-06-20【CS.DS】数据结构 —— 图结构:图的三种表示方法之邻接表(Adjacency List)
    文章目录1概念2无向图的邻接表2.1示例2.2Mermaid图示例2.3C++实现2.3.1简单实现2.3.2优化封装2.4总结3有向图的邻接表3.1示例3.2C++实现3.3总结4邻接图的遍历5拓展补充References数据结构1概念优点:空间效率高,适合稀疏图。动态性强,可以方便地
  • 2024-06-07【数据结构】图论入门
    引入数据的逻辑结构:集合:数据元素间除“同属于一个集合”外,无其他关系线性结构:一个对多个,例如:线性表、栈、队列树形结构:一个对多个,例如:树图形结构:多个对多个,例如:图图的基本概念及术语图:G=(V,E)V:顶点(数据元素)的有穷非空集合E:边的有穷集合图的类型定义无向图:每
  • 2024-05-31有上下界的网络流
    顾名思义,有上下界的网络流与一般网络流相比多一个下界的限制,就是一条边的流量要满足在\([l,r]\)这个区间内。这里一共有三个问题:1.无源汇有上下界可行流2.有源汇有上下界可行流3.有源汇有上下界最大/小流三个问题是前后关联的。无源汇有上下界可行流对于一条边\(u\tov\),定
  • 2024-05-14【图的连通性】【并查集】【拓扑排序】
    在图论中,不同类型的图(无向图和有向图)需要使用不同的算法和数据结构来处理它们的特性和问题。这里我们将讨论如何使用并查集来解决无向图的连通性问题,以及如何使用深度优先搜索(DFS)、广度优先搜索(BFS)和拓扑排序来解决有向图中的依赖性问题。无向图的连通性:并查集对于无向图的连通
  • 2024-05-13高一下三调模拟赛5.13(附关于二分图匈牙利建边的详细思考)
    前言注:本篇为知识性内容,A题附详解关于匈牙利算法求最大独立子集难以理解的建边问题的思考,若有不当之处感谢指出。暂时只写了A篇题解,以供帮助大家理解相关问题,剩余题解会进行补充。又是小集训的一周,总要伴随着模拟赛...还是五道题目:A.攻击装置B.循环C.漫步D.穿越E.结
  • 2024-04-20D - New Friends
    D-NewFriendshttps://atcoder.jp/contests/abc350/tasks/abc350_d 思路此sns网络,可能包括若干个连同子图,对于每个子图,计算连通子图中成员数目,和连接数目,计算全连接子图,需要的总的连接数目,减去当前连接数目,得到每个连通子图的还需要建立的连接数目,累加所有子图
  • 2024-03-20c#实现图的拓扑排序
    原文链接:https://blog.csdn.net/MfuuJava/article/details/132933517拓扑排序是一种在有向无环图(DAG)中对节点进行排序的算法。在C#中,我们可以使用深度优先搜索(DFS)和拓扑排序算法来解决这个问题。深度优先代码:usingSystem;usingSystem.Collections.Generic;classGraph
  • 2024-03-14【数据结构高阶】图
    目录一、图的基本概念二、 图的存储结构2.1邻接矩阵2.2.1 邻接矩阵存储模式的代码实现2.2.2 邻接矩阵存储的优缺点2.2邻接表2.2.1无向图的邻接表 2.2.2 有向图的邻接表  2.2.3 邻接表存储模式的代码实现2.2.4 邻接表存储的优缺点三、图的遍历3.1图的
  • 2023-10-20P6378 [PA2010] Riddle-2sat优化建图
    P6378[PA2010]Riddle-2sat优化建图\(n\)个点\(m\)条边的无向图被分成\(k\)个部分。每个部分包含一些点。请选择一些关键点,使得每个部分恰有一个关键点,且每条边至少有一个端点是关键点。\(1\leqn,m\leq10^6\)边的限制用\(n\)个变量\(x_1\dotsx_n\),其中\(x_i\)
  • 2023-10-09Go - Finding the Shortest Path on a Graph
    Problem: Youwanttofindtheshortestpathbetweentwonodesonaweightedgraph.Solution: UseDijkstra’salgorithmtofindtheshortestpathbetweentwonodes.Dijkstra’salgorithmalsousesapriorityqueue,whichcanbeimplementedusingaminheap.
  • 2023-08-29【数据结构与算法】TypeScript 实现图结构
    classGrapg<T>{//用于存储所有的顶点verteces:T[]=[];//用于存储所有的边采用邻接表的形式adjList:Map<T,T[]>=newMap();//添加顶点addVertex(v:T){this.verteces.push(v);//初始化顶点的邻接表this.adjList.set(v,[]);}
  • 2023-08-26java中的图算法
    Java中有许多用于图算法的库和框架。下面是一些常见的图算法及其在Java中的实现方式:广度优先搜索(BFS):BFS用于在图中搜索最短路径。在Java中,可以使用LinkedList和HashSet来实现BFS算法。深度优先搜索(DFS):DFS用于在图中搜索路径或查找连通分量。在Java中,可以使用递归或栈来实现DFS算法
  • 2023-08-21JGraphT计算关键路径
    简介JGraphT是一个Java实现的图论数据结构和算法库。本文讲介绍通过JGaphT来计算关键路径。关键路径:用于在进度模型中估算最短工期,关键路径是项目中时间最长的活动时间。案例描述下图Graph1-进度网络图表示项目的各项任务关系图以及任务的预计工期。为了采用图计算,这里将任务的预
  • 2023-05-16C++ 图进阶系列之剖析二分图的染色算法和匈牙利算法
    1.前言二分图又称作二部图或称为偶图,是图论中的一种特殊类型,有广泛的应用场景。什么是二分图?二分图一般指无向图。看待问题要有哲学思想,有二分图也可以是有向图。如果图中所有顶点集合能分成两个独立的子集,且任一子集中的任意顶点之间没有边连接,则称这样的图为二分图。
  • 2023-02-042-SAT
    P3387题目链接题意2-SAT板题思路依据约束关系建图,用\(Tarjan\)跑强连通分量,如果一个值的true和false再同一个强连通分量则无解我觉得最具有争议的地方就是洛谷的
  • 2022-11-16CF1697F
    每一个bool变量表示「\(a_i\)是否\(\gej\)」,由于\(a_i\)必然\(\ge1\),所以总的变量数是\(n(k-1)\)。然后我们根据题目条件来建有向边,注意2-sat要满足对称性,所以
  • 2022-11-13C - Ladder Takahashi -- ATCODER
    C-LadderTakahashihttps://atcoder.jp/contests/abc277/tasks/abc277_c 思路把梯子可达楼层看成图的节点把梯子看成节点之间的连线所以整个问题变成图的遍历问题
  • 2022-11-11CF1753D Beach Sol
    看到这种要先满足某个条件才能满足另一个条件的题目,想到图论。假设当前有一个\(c_{i,j}=\)L,\(c_{i,j+1}=\)R,那么如果要把其右移一格就需要满足\(c_{i,j+2}\)当前空出
  • 2022-11-07树的点权
    问题描述给定一棵有n个点的树(点的编号为1~n),根为1,点有点权,设点i的初始值为0,给出q个操作,每个操作给出两个点和一个值,u,v,t,表示将u到v的路径上的所有点加t,输出所有操作后每
  • 2022-09-02匈牙利算法
    #include<bits/stdc++.h>usingnamespacestd;constintN=550,M=1e5+10;intn1,n2,m,h[N],e[M],ne[M],idx;intmatch[N],ans;boolvis[N];voidadd
  • 2022-09-01染色法二分图
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10,M=1e5+10,INF=0x3f3f3f3f;intn,m,h[N],e[M<<1],ne[M<<1],idx,color[N];vo