随笔分类 -  图论_最小生成树

摘要:Borg Maze大意:给你一个m*n的迷宫,可以上下左右的走,只能走空格或字母,求出将所有字母连通起来的最小耗费。思路:先用BFS求出S到所有A的距离,再用Prim求最小生成树,求出最小耗费。这个题坑的不在题,是数据太坑了,在空格处理上没弄好,贡献了好几个WA和CE,看Discuss才知道很坑,最后用G++过了的代码,C++还RE,实在不知道说什么好了 =。= 1 #include 2 #include 3 #include 4 #define INF 0xfffffff 5 using namespace std; 6 7 char str[55][55]; 8 i... 阅读全文
posted @ 2014-01-24 13:19 GLSilence 阅读(170) 评论(0) 推荐(0)
摘要:Highways大意:给你一个用邻接矩阵形式存储的有n个顶点的无向图,让你求它的最小生成树并求出在这个生成树里面最大的边的权值。思路:用Prim求,判断条件改一下就行。PS:dis数组初始化的时候用memset一直RE,希望有知道怎么回事的不吝赐教,谢了~ 1 #include 2 #include 3 #define INF 0x3f3f3f3f 4 5 int Map[510][510]; 6 int dis[510]; 7 int n, m; 8 9 int min(int a, int b)10 {11 return a > b ? b : a;12 }13 14 in... 阅读全文
posted @ 2014-01-23 16:15 GLSilence 阅读(392) 评论(0) 推荐(0)
摘要:Truck History大意:用一个7位的string代表一个编号,两个编号之间的距离代表这两个编号之间不同字母的个数。一个编号只能由另一个编号变化的来,变化的字母的数量就是这两个编号之间相应的距离,现在要找出一个变化方案,使得总代价最小,也就是距离之和最小。思路:将每个字符串当成一个节点,求出每个节点之间需要变化的次数为边的权值,用Prim建立最小生成树(稠密图)。 1 #include 2 #include 3 #define INF 0x3f3f3f3f 4 5 int Map[2010][2010]; 6 char s[2010][8]; 7 int dis[2010]; 8 ... 阅读全文
posted @ 2014-01-23 14:46 GLSilence 阅读(469) 评论(0) 推荐(0)
摘要:Agri-Net大意:新镇长竞选宣言就是将网络带到每一个农场,给出农场个数,两两之间建光缆的耗费,求所有都联通的最小耗费。思路:最小生成树,因为边比较稠密,用Prim做。PS;对于比较稠密的图,用Prim,对于比较稀疏的图,用Kruskal。Kruskal是找边的过程,稀疏的话会比较快。 1 #include 2 #include 3 #define INF 0x3f3f3f3f 4 5 int dis[110]; 6 int Map[110][110]; 7 int n; 8 int Ans; 9 10 int min(int a, int b)11 {12 return a ... 阅读全文
posted @ 2014-01-23 14:19 GLSilence 阅读(224) 评论(0) 推荐(0)