随笔分类 - 图论
1
摘要:#include<bits/stdc++.h> #define ll long long using namespace std; const int N = 2e5 + 10,inf = 0x3f3f3f3f; vector<int> g[N]; int R[N]; int vis[N]; int
阅读全文
摘要:解题思路 点双连通分量 是指一个无向图的极大连通子图,其中不包含割点(删除任意一个点后图仍然连通)。换句话说,点双连通分量中的任意两点都位于至少一个简单环中。 核心算法:使用 Tarjan 算法,通过 DFS 遍历图,利用 dfn(深度优先搜索序号)和 low(能追溯到的最早祖先的 dfn)来识别割
阅读全文
摘要:解题思路 问题分析: 给定有向图,每个点有权值,求路径最大点权和 允许重复经过边和点,但重复点的权值只计算一次 关键:强连通分量内的点可以任意走,权值只需累加一次 Tarjan缩点算法: 求强连通分量(SCC):使用Tarjan算法找出所有SCC 缩点建新图:将每个SCC缩成一个节点,形成DAG 拓
阅读全文
摘要:解题思路 割点(割顶):在一个无向图中,如果删除某个顶点以及与之相连的所有边后,图的连通分量数量增加,则该顶点称为割点。 Tarjan算法求割点的核心思想: 使用深度优先搜索遍历图 维护两个数组: dfn[i]:顶点i的深度优先搜索遍历序号(时间戳) low[i]:顶点i能够回溯到的最早的祖先节点的
阅读全文
摘要:解题思路分析: 问题理解: 需要在有向图中找到从1到N的任意行走(允许重复访问节点和边) 目标是使路径上所有边权重的异或值最小 关键观察: 异或操作的性质:a ^ b ^ b = a(走两次同一条边会抵消) 因此可以允许路径中出现"来回走"的情况来调整异或值 算法选择: 使用BFS遍历所有可能的异或
阅读全文
摘要:解题思路 这道题可以建模为一个单源最短路问题,目标是找到从初始商品 a 到目标商品 b 的最小花费(可能是负数)。 关键点分析 商品交换的花费计算: 如果 v[x] > v[y],交换后你会获得 v[x] - v[y] 元,但需要支付 1 元手续费,所以总花费是 -(v[x] - v[y]) + 1
阅读全文
摘要:1.普通版dijstra写法: #include<bits/stdc++.h> using namespace std; const int inf = 1e8+10; // 定义无穷大值,表示不可达 int ma[1005][1005]; // 邻接矩阵存储图结构 int vis[1005]; /
阅读全文
摘要:描述 如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数。 输入描述 第一行n,m,有n个点,m条边,以下m行
阅读全文
摘要:描述 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? 输入 输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=1000
阅读全文
摘要:描述 东汉建安十三年,孙权、刘备联军在长江赤壁一带,大败曹操军队的一次决战。曹操败袁绍、破乌桓,基本统一北方后,于建安十三年七月,自宛挥师南下,欲先灭刘表,再顺长江东进,击败孙权,以统一天下。九月,曹军进占新野,时刘表已死,其子刘琮不战而降。依附刘表屯兵樊城的刘备仓促率军民南撤。曹操 收编刘表部众,
阅读全文
摘要:无向图:两个有边连接的点是互通的 有向图:两个有边连接的点是不互通的,只会有一个点单向指一条边到另一个点 度:与一个节点有相连的边数量 入度:一个节点有多少条指向自己的边 出度:一个节点有多少条指向其他节点的边 最小生成树:n个结点最少需要n-1条边相连把所有点构成一个图 4408: 图的遍历 描述
阅读全文
摘要:描述 由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,Yali Company总经理Mr.Z心情好,决定给每位员工发奖金。公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少。 于是Mr.Z下令召开m方会谈。每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.
阅读全文
摘要:描述 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。 给出每个人的孩子的信息。 输出一个序列,使得每个人的后辈都比那个人后列出。 输入 第1行一个整数N(1≤N≤100),表示家族的人数; 接下来N行,第i行描述第i个人的儿子; 每行最后是0表示描述完毕。 输出 输出一个序列,使得每个人
阅读全文
摘要:描述 某个局域网内有n(n≤100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度(f(i,j)≤
阅读全文
摘要:描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节省费用,我们采用数据的间接传输手段,即一台计算机可以
阅读全文
摘要:1.多源最短路简介:我们知道单源最短路是指从某一个源点到图中的其它顶点的最短路。多源最短路就是指每一个点到图中其他顶点的最短路。那么有的人肯定想我知道求单源最短路的算法了,那么有多少个点我就求多少次呗,这样做时间效率不高,空间效率也极其低。那么有什么算法求解多源最短路呢?——Floyd 2.Floy
阅读全文
摘要:描述 N个农场(1 ≤ N ≤ 1000)中的每一个都有一头奶牛,编号为 1.. N将参加在农场 # X(1 ≤ X ≤ N)举行的大型奶牛聚会。总共有M (1 ≤ M ≤ 100,000) 条单向(单向道路连接成对的农场;道路i需要T i (1 ≤ T i ≤ 100) 单位时间才能穿过。 每头奶
阅读全文
摘要:描述 给定n个顶点的带权有向图,若从顶点x到顶点y之间存在一条路径,那么这条路径的长度定义为路径上各条边的权值之和。 现在请你找出从顶点1到顶点n的一条最短路径。 输入 第一行为两个正整数n和m(n<=1000,m<=5000),n表示顶点数,m表示边数。 接下来有m行,每行三个正整数x,y,w,表
阅读全文
摘要:一、floyd 1.介绍 floyd算法只有五行代码,代码简单,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3),可以求多源最短路问题。 2.思想: Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我
阅读全文
1

浙公网安备 33010602011771号