
图论
霜雨蓝焰,
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CodeForces - 574B(思维+暴力)
CodeForces - 574B 思维题 最暴力的想法是直接枚举3个点,这样复杂度为o(n^3),对于4000的数据量肯定会挂掉,所以可以改变一下思路先枚举边,每枚举出一条边就得到了两个点,然后枚举剩下那个点找到度数最小值就行。 #include<iostream> #include<vector> #include<cstdio> #include<c...原创 2019-10-16 17:31:37 · 215 阅读 · 0 评论 -
HDU-128 棋盘游戏(二分图匹配)
HDU-128 #include<bits/stdc++.h> #define maxn 210 using namespace std; int q[maxn]; int p[maxn][maxn]; bool vis[maxn]; int n,m,k; bool dfs(int x){ for(int i=1;i<=m;i++){ if(p[x][i]&&...原创 2019-10-13 13:54:51 · 226 阅读 · 0 评论 -
二分图判定
所谓二分图,其最大的特点在于,可以将图里的顶点分为两个集合,且集合内的点没有直接关联(之间没有边相连)。 判断二分图的常见方法是染色法:用两种颜色,对所有顶点逐个染色,且相邻顶点染不同的颜色,如果发现相邻顶点染了同一种颜色,就认为此图不为二分图。 当所有顶点都被染色,且没有发现同色的相邻顶点,就退出。 bool dfs(int v, int c){ color[v] = c; //为...原创 2019-10-12 22:53:54 · 334 阅读 · 0 评论 -
图论-最短路问题(Dijkstra算法)
最短路问题 单源最短路 1.Dijkstra算法 POJ2387 Dijkstra模板题 主要注意存图方式,其实这个题数据量不大用邻接矩阵完全可以存下,我这里使用vector存图主要是保险(没看见数据量这么小,,)。 然后这个是个无向图需要判断重边(我第一次就是在这里wa的,,)对于重复的边应该取最小的边权。 这种裸题主要考察细节(我就wa在这上边)。 对于Dijkstra算法本身不难,主要就是一...原创 2019-07-29 20:52:02 · 564 阅读 · 0 评论 -
图论-最小生成树(Kruskal算法)
Kruskal算法 POJ1287 所谓克鲁斯卡尔算法就是先将边按边权从小到大排序,然后贪心选取 在算法运行时应注意避免成环(避圈法) 采用并查集来完成边的合并同时避免成环 #include<iostream> #include<cstring> #include<queue> #include<algorithm> #define max 500...原创 2019-07-29 21:08:22 · 250 阅读 · 0 评论 -
图论-拓扑排序
拓扑排序 HDU1285 #include<bits/stdc++.h> using namespace std; const int maxn=600; int n; int main(){ int a,b; int m; while(cin>>n>>m){ vector<int>p[maxn]; int in[maxn]; ...原创 2019-07-30 10:45:10 · 128 阅读 · 0 评论 -
图论-最短路问题(SPFA)
SPFA算法 迪杰斯特拉算法不能解决具有负边权的问题所以就需要SPFA算法来判断负环(当有负环的时候肯定是走负环可以达到最小,,,,) POJ2240 因为汇率可以大于或小于1,所以就可以把汇率大于1的交换方法看作负边权, 只需要使用SPFA算法使初始点的值大于初始值就好。 #include<stdio.h> #include<string.h> #include<q...原创 2019-08-03 16:18:24 · 228 阅读 · 0 评论 -
图论-最小生成树(prim算法)
prim算法 克鲁斯卡尔算法的核心是对边贪心选取,前提是要先对边进行排序,当边的数量特别大的话依然会出问题,所以当图为稠密图的时候应该使用prim算法。 prim算法实质是迪杰斯特拉算法通过更新源点到各点的最小距离来得出最小的边权和。 POJ1789 #include <cstdio> #include <cstring> #define INF 1<<27...原创 2019-08-03 17:11:26 · 257 阅读 · 0 评论 -
图论-最大生成树的最小边
POJ1797 #include<cstdio> #include<vector> #define maxn 2000 #define inf 1<<29 using namespace std; struct h{ int e; int v; }; vector<h>a[maxn]; bool vis[maxn]; int d[maxn]; i...原创 2019-09-02 22:50:00 · 243 阅读 · 0 评论