随笔分类 -  图算法————树

POJ2031Building a Space Station
摘要:http://poj.org/problem?id=2031题意:你是空间站的一员,太空里有很多球形且体积不一的“小房间”,房间可能相距不近,也可能是接触或者甚至是重叠关系,所有的房间都必须相连,这样的话宇航员才能从这个房间走到另一个房间,而宇航员从一个房间走到另一个房间,只要满足三个条件中的一个即可:1两个房间是接触的,2两个房间是重叠的,3两个房间之间有走廊相连。也因此若是没有接触的两个小房间就要有走廊连接,忽略走廊的宽度,花费与长度成正比,所以当然是花费越少越好,而球与球之间的距离只接触到两球的表面即可,因为两球的表面相距最近,因此你的工作就是算给出的几个小房间中要达到相连的状态需花费的 阅读全文
posted @ 2013-10-31 23:38 枫、 阅读(561) 评论(0) 推荐(0)
POJ3253Babelfish
摘要:http://poj.org/problem?id=3253就是一个哈夫曼树,题目下边有提示,所以题意还是好理解的#include#include#include#includeusing namespace std;int main (){ map tra; char s[100011], str[100011], s1[100011]; while (gets(s)&&s[0]) { sscanf(s,"%s %s",str,s1);//将输入的字符串,空格前边的赋给str串,后边的赋给s1串 tra.insert(pair(s1,str... 阅读全文
posted @ 2013-08-19 16:00 枫、 阅读(178) 评论(0) 推荐(0)
POJ2485Highways
摘要:http://poj.org/problem?id=2485题意 : 这道题和1258很像,但是这道题求的是最小生成树中最大的那条边,所以在函数里处理一下就行了。思路 : 赤裸裸的最小生成树啊,但是这道题一定要注意,因为底下有提醒,一定要用scanf输入,结果我就很悲剧的没看到啊,然后一直改一直改,到最后又去看了一遍题才发现要用scanf啊,╮(╯▽╰)╭ 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int ans,dis[5005][5005]; 7 const int INF = 1 low[j] 阅读全文
posted @ 2013-08-14 13:57 枫、 阅读(288) 评论(0) 推荐(0)
POJ1789Truck History
摘要:题意 : 说实话,题意我没看懂,后来让人给我讲的样例。。。。。 4aaaaaaabaaaaaaabaaaaaaabaaaa0这个样例的话,就是输入n下面n行,每行7个字母,让你依次选两行进行比较,不同的有多少个,所以题目中给的样例,1,2行一个不同的,1,3行一个不同的,1,4行一个不同的,所以距离是3,2,3行两个不同的,2,1行一个不同的,2,4行两个不同的,距离是4,这样找下去,可以构成一个无向图,找最小生成树。解题思路 : 其实就是一个转化问题,将给的字符串转化成距离的二维数组再找最小生成树即可 1 #include 2 #include 3 #include 4 #include 5 阅读全文
posted @ 2013-08-14 13:01 枫、 阅读(260) 评论(0) 推荐(0)
最小生成树模板
摘要:最小生成树的算法有两种,一种是prim,另一种是kruskal。prim模板: 1 int prim() 2 { 3 //low数组用来保存非生成树中各顶点与生成树中顶点最短边的权值;dis数组则是你输入的数组矩阵 4 int ans = 0, i, j, flag, min; 5 ... 阅读全文
posted @ 2013-08-14 10:32 枫、 阅读(347) 评论(0) 推荐(0)
POJ1258Agri-Net
摘要:http://poj.org/problem?id=1258题意 : john当上了镇长,打算给每个农场都连接网络,需要用最小的成本连接其他所有农场,所以要找最少的纤维连在一起,任何两个农场之间的距离不超过十万。输入n,下面有n行n列,代表着每两个农场的距离,对角线为0,因为自己到自己是为0;解题思路 : 这个题要包含所有的农场,赤果果的最小生成树,这个题的话,注意是多组输入还有数组不要开得太小,算法的话prim和kruskal都可以,我用的是prim。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 i 阅读全文
posted @ 2013-08-14 10:21 枫、 阅读(281) 评论(0) 推荐(0)
SDUT2482二叉排序树
摘要:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2482&cid=1184题目描述二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要判断两序列是否为同一二叉排序树输入开始一个数n,(1 2 #include 3 #include 4 //int mark=1; 5 typedef struct node 6 { 7 char data; 8 ... 阅读全文
posted @ 2013-07-30 10:45 枫、 阅读(385) 评论(0) 推荐(0)
SDUT图结构练习——最小生成树
摘要:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186这道题一开始是用prim算法做的,一直错一直错,后来问了帅郭改用Kruskal做才对,再后来问了THH和二货才改对的prim算法,是因为重边我没处理啊,上火 1 #include 2 #include 3 #include 4 #include 5 using namespace std ; 6 #define oo (1=low[j])26 {27 min = low[j];28 ... 阅读全文
posted @ 2013-06-29 19:16 枫、 阅读(443) 评论(0) 推荐(0)