图论
文章平均质量分 80
三江小渡
这个作者很懒,什么都没留下…
展开
-
简单的说一下广搜算法,带个例题NYOJ115 城市平乱。
#include#include#includeusing namespace std;int city[1005][1005];struct army{ bool ishave; int len;}armys[1005];bool visited[1005];int bfs(int Q,int M){ int sum=999999999,temp=0; queue que; memset(visited,0,sizeof(visited));原创 2011-01-21 21:37:00 · 747 阅读 · 0 评论 -
NYOJ38布线问题 prim 最小生成树MST
http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=38#include#includeusing namespace std;#define typec int #define V 502const typec inf = 0x0f3f3f3f;int vis[V]; typec lowc[V]; typec cost[V][V];typec prim(int n){ int i, j原创 2011-01-23 03:44:00 · 1065 阅读 · 0 评论 -
POJ 1861 Network [最小生成树算法MST-kruskal 数据结构-并查集 union-find sets]
跟这个prim算法最小生成树http://blog.csdn.net/hzyhouzhiyuan/archive/2011/01/23/6159382.aspx,两个算法,邻接矩阵存图时,prim适用于稠密图,kruskal适于用稀疏图。代码还是比较清晰明了的,不再赘述了……#include #include #includeusing namespace std;const int MAXSIZE = 1050; int rank[MAXSIZE]; // 节点高度的上界原创 2011-03-28 17:31:00 · 873 阅读 · 0 评论 -
HDU1181 变形课 【深搜、广搜、弗洛伊德(Floyd)算法】
水题,练习练习,复习复习。。。。大意:根据所给字母收尾字母建图的链接边。然后……搜吧,另外还可以练习一下Floyd算法。。#include#include #include#include using namespace std;int map[27][27],flag;int visted[27];void dfs(int pos){ if(flag) return; if(pos==12){ flag=1;return;} for (int i=0;i que;原创 2011-03-29 15:49:00 · 695 阅读 · 0 评论 -
POJ 3660 && NYIST 211 Cow Contest && ZOJ 1060 Sorting It All Out【Floyd算法扩展应用】
Floyd算法:Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法(百度百科给的。。。)。 核心思路 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩原创 2011-03-30 14:35:00 · 588 阅读 · 0 评论 -
NYOJ129 树的判定 || POJ1308 Is It A Tree? 【并查集应用,树的定义】
<br />http://acm.nyist.net/JudgeOnline/problem.php?pid=129<br />一个有向图入度为1的节点仅有一个,并且无环,则是一颗树。<br />#include<cstdio>#include <cstring>using namespace std;const int MAXSIZE = 10002; int pre[MAXSIZE]; //根节点i,pre[i] = -num,其中num是该树的节点数目; //非根节点j,pre原创 2011-04-06 22:18:00 · 632 阅读 · 0 评论