图论
stloztoeplitz
严格标准不抱怨,宽松要求自提高
展开
-
图的m着色问题
转载自:http://www.cnblogs.com/qinyg/archive/2012/06/19/2543583.html 图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该图转载 2016-12-10 16:02:24 · 400 阅读 · 0 评论 -
最小生成数模板和并查集模板
#include<bits/stdc++.h>using namespace std;struct Edge{int u,v,w;}edge[200005];int fa[5005],n,m,ans,eu,ev,cnt;inline bool cmp(Edge a,Edge b){ return a.w<b.w;}//快排的依据inline int fi...原创 2018-08-29 22:24:35 · 110 阅读 · 0 评论 -
Poj 1258
#include<iostream>#include <string.h> using namespace std;const int maxn = 1000;int graph[maxn][maxn];int dis[maxn];int vis[maxn];int n;const int INF = 0x3f3f3f3f;int tree(int r) { int ans原创 2017-06-23 00:11:03 · 291 阅读 · 0 评论 -
Poj 1161
#include <stdio.h>#include <string.h> int const maxn = 1000;const int INF = 0x3f3f3f3f;int n,m,a;int member[maxn];int G[maxn][maxn];struct area { int townnum; int town[maxn]; int vis原创 2017-06-20 14:20:54 · 284 阅读 · 0 评论 -
全排列拓扑排序
由于要解答用dfs写了一个输出一张有向图的所有拓扑排序的代码。 顺便再这里总结一下关于dfs写的技巧,关于dfs一定是要有循环的,只有这样才能够构成排列,而且分清楚当前步骤要做什么,在调用下层后要注意恢复状态。一般纯dfs的效率都不会高,这时候特别要注意减枝。#include <iostream>#include <cstring>#include <vector>#include <alg原创 2016-12-04 11:40:06 · 679 阅读 · 0 评论 -
无线广播(Broadcast)
描述 某广播公司要在一个地区架设无线广播发射装置。该地区共有n个小镇,每个小镇都要安装一台发射机并播放各自的节目。不过,该公司只获得了FM104.2和FM98.6两个波段的授权,而使用同一波段的发射机会互相干扰。已知每台发射机的信号覆盖范围是以它为圆心,20km为半径的圆形区域,因此,如果距离小于20km的两个小镇使用同样的波段,那么它们就会由于波段干扰而无法正常收听节目。现在给出这些距离小于20原创 2016-12-10 15:54:38 · 614 阅读 · 0 评论 -
红与黑
#include <iostream>#include <cstring>using namespace std;const int maxn = 25; int dr[]={0,0,1,-1};int dc[]={1,-1,0,0};char data[maxn][maxn]; int vis[maxn][maxn];int dfs(int lr,int lc,int r,int原创 2016-12-29 14:00:27 · 336 阅读 · 0 评论 -
连通性问题
典型的查并集算法,适用于森林的连接#include <iostream>using namespace std;int const maxn = 100010;int father[maxn];int find(int x) { if (x!=father[x]) father[x] = find(father[x]); return father[x];}原创 2016-12-08 20:34:16 · 218 阅读 · 0 评论 -
图的广度优先搜索
pay attention to the cout#include <iostream>#include <vector>#include <cstring>#include <queue>using namespace std;const int maxn = 1010;int nV,nE;int vis[maxn];int map[maxn][maxn];int main()原创 2017-01-01 13:33:08 · 241 阅读 · 0 评论 -
connect components in undirected graph
深度和宽度搜索都写了,记住分析的过程。#include <iostream>#include <vector>#include <cstring>#include <queue>using namespace std;const int maxn = 1010;int nV,nE;int vis[maxn];int f (int lo,vector<vector<int>> V) {原创 2017-01-01 13:11:46 · 280 阅读 · 0 评论 -
最长句子
从子树到父节点却是一个选择。#include <set>#include <map>#include <string>#include <iostream>using namespace std;int getLen(string s,map<string,set<string>>& mp,map<string,int>& hasFind){if(hasFind.count(s)==1)原创 2016-12-29 13:32:51 · 351 阅读 · 0 评论 -
1024. Magic Island
为什么可以用dfs呢,因为它是一棵树,n个点n-1条边。虽然感觉dijkstra算法效率够高了只有O(n)的复杂度,但是这个dfs也是啊,而且效率更高。 学习点:用vector数组来表示临界表,我一直以为要自己写效率很低容易错的邻接表呢。这个方法不错! 易错点:图是无向图,不要搞错有向图了,而且要注意初始化。#include <iostream>#include <vector>#inclu原创 2016-12-01 21:29:36 · 293 阅读 · 0 评论 -
1937. 导游
一看就是dijkstra算法的变形了。 但是还是要强调的是: 1)用邻接矩阵来表达图的时候,初始化,选择,更改的目的点都是i或者j,循环是对所有的顶点循环 2)用邻接表来表达图的时候,初始化,更改的时候是对目的链来操作,操作点位v[k][j].end,循环也是对链来循环。这个很容易错,我就把d[v[k][j].end]写成了d[j]或d[v[k][j].cost] 注意在传统的dijkstr原创 2016-12-03 23:59:06 · 247 阅读 · 0 评论 -
1940. Ordering Tasks
一道典型的拓扑排序题,在有多解的情况下输出字典序最小的。我在这里被坑了好久,在每次插入队列或向量后都要对其进行重新的排序才能保证输出的是最小字典序。可以用set来选作储存容器。#include <iostream>#include <cstring>#include <vector>#include <algorithm>#include <cmath>#include <queue>#原创 2016-12-04 10:29:42 · 337 阅读 · 0 评论 -
有向图边的分类
表达用规范的标示符,若空间不够的话可以用vector来模拟邻接表。 本题只有一组测试样例,所以直接输出样例答案也是可以过得。 memset可以用-1初始化,可以看我转载的一篇关于memset函数的文章#include <iostream>#include <cstring>using namespace std;const int maxn = 110;int adjMatrix[max原创 2016-12-02 14:07:22 · 395 阅读 · 0 评论 -
1090. Highways Constraints
prim算法,写得比较简陋,没有向书中那样用adjvex数组记录关系而是用的vis记录是否达到,与dijkstra算法非常相似。#include <iostream>using namespace std;int const maxn = 510;int map[maxn][maxn];int n;int isch[maxn],vis[maxn];int cost[maxn],fag[原创 2016-12-01 19:59:01 · 264 阅读 · 0 评论 -
P1197 [JSOI2008]星球大战
不同的结构形成的结果也不同。。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<stack>#define MAXN 200010using namespace std...原创 2018-08-30 15:49:00 · 135 阅读 · 0 评论