图论
图论板子专栏和理解
路明非hero
Coding Changes the World
展开
-
树的直径
BFS求树的直径:第一遍bfs求得一定是直径的端点。再做bfs题目描述给定一棵树 T ,树 T 上每个点都有一个权值。定义一颗树的子链的大小为:这个子链上所有结点的权值和 。请在树 T 中找出一条最大的子链并输出。输入描述:52 -1 -1 -2 31 22 32 42 5输出4大板子一套,转移都省了#include <bits/stdc++.h>usi...原创 2020-02-23 10:52:54 · 106 阅读 · 0 评论 -
POJ 1330 (求LCA, 树上倍增算法,复杂度,预处理和查询均是(nlogn))
标准lca板子,只用来求最近公共祖先T组输入,最后一行输入一个查询。#include<bits/stdc++.h>#define pb push_backusing namespace std ;int T,n;int fa[10005][16],dep[10005],d[10005];vector <int > e [10005];void dfs(int...原创 2020-02-09 14:23:08 · 150 阅读 · 0 评论 -
kruskal,prim 算法,题目待补
kruskal 算法复杂度为mlogm,适用于稀疏图prim算法复杂度为nlogm ,适用于稠密图拓扑排序:有向无环图原创 2020-02-08 20:49:53 · 132 阅读 · 0 评论 -
CF1276B B. Two Fairs 1900 (图上做dfs ,简单题)
图上做dfs()本题链接题意: 给一张连通 的无向 图,同时给你两个重要点,询问图上有多少对点满足从一个点到另一个点都必须经过这两个重要点。思路: 本题的答案应该就是只有b能到的点*只有a能到的点,因为图连通,一个小技巧,dfs时直接将a点标记走过,dfs(b)点,标记为0的点就是只有a点能到的点,dfs(a)亦然,快速秒杀这道题。#include<bits/stdc++.h>...原创 2020-02-07 15:29:04 · 332 阅读 · 0 评论 -
HAOI2006 受欢迎的牛 1700 (tarjan缩点,算有向无环图出度,入度)
入度就是:有向图的某个顶点作为终点的次数和。出度就是:有向图的某个顶点作为起点的次数和。tanjan算法主要是为了将一个强连通分量缩成一个点,使图变为有向无环图。复杂度O(n+m)注意事项:1、init()2、把图用add 存下来,注意图点标为1-n,若是[0,n-1]则给所有点++;3、调用tarjan_init(n);// n为点的总数。 再调用suodian();4、新图就是v...原创 2020-02-07 14:19:46 · 218 阅读 · 0 评论 -
dijkstra堆优化+前向星存图+路径查询
使用方法,**s即为起点,跑dij就可以了,路径查询的话下面的i=n,n即为终点,反着跑就可以了,dis【】存起点到其他点的距离。**#include<iostream>#include<algorithm>#include<queue>#include<cstdio>#include <cstring>using nam...原创 2019-11-27 21:24:45 · 137 阅读 · 0 评论