摘要: 道题比较坑,就是输入N,M之后可能有多个空格这里要注意;方法:1:建图,把A进行编号在存储到图中;2:利用BFS找出任意两点的最短距离;3:利用kruscal生成最小生成树;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<cstring>#include<vector>using namespace std;in 阅读全文
posted @ 2012-07-01 19:24 wutaoKeen 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 一道简单的最小生成树问题:View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<map>#include<cstring>#include<vector>using namespace std;class Kru{public: int x,y,dis;}kru[10024];int set[124];bo 阅读全文
posted @ 2012-07-01 16:46 wutaoKeen 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 一道简单的最小生成树问题;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<map>#include<cstring>#include<vector>using namespace std;class Kru{public: int x,y,dis;}kru[250024];int set[524];b 阅读全文
posted @ 2012-07-01 16:41 wutaoKeen 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题意:用一个7位的string代表一个车的编号,两个编号之间的distance代表这两个编号之间相同位置不同字母的个数。如果一个编号要“衍生”另一个编号,代价是这两个编号之间相应的distance也就是改变字母数,现在要求总的改变数最小,也就是distance之和最小。4aaaaaaabaaaaaaabaaaaaaabaaaa编号2,3,4分别从第一编号衍生出来的代价最小,因为2,3,4分别与第一编号只有一个字母是不同的,相应的distance都是1,加起来是3。也就是总的改变数最小为3。View Code #include<iostream>#include<cstdio& 阅读全文
posted @ 2012-07-01 16:10 wutaoKeen 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 这个题求是否经过兑换后钱能不能增加。这题可以用bellman比较容易解决;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<cstring>#include<string>#include<vector>using namespace std;class Edge{ 阅读全文
posted @ 2012-07-01 12:40 wutaoKeen 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题意:以任意顶点为起点,能够连通所有的节点,问你以哪个节点为起点时到所有的节点的最短路的最长路最短;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<cstring>#include<vector>using namespace std;const int inf = 0x7f 阅读全文
posted @ 2012-07-01 11:37 wutaoKeen 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题意:一只青蛙在湖中1号石头上, 它想去2石头号上去找另外一只青蛙,但是 湖里的水很脏,它不愿意游泳,所以它要跳过去;给出 两只青蛙所在石头的坐标, 及湖里其他石头的坐标;任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。解法一:用克鲁斯卡尔:View Code #include<iostream>#include<cstdio>#include<cstdlib>#inc 阅读全文
posted @ 2012-07-01 10:28 wutaoKeen 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 这个一道最短路题;这里难处理的就是等级只差的问题;这里我们就用枚举法;假设等级只差为L=3;酋长的等级为5,这里就只存在这几种情况2-5,3-6,4-7,5-8;我们只要处理这几种情况就可以了;至于建图就直接用钱数就可以了;View Code #include<cstdio>#include<iostream>using namespace std;const int inf = 0x7fffffff;int level[124],map[124][124],L,N,dis[124],hash[124];void Empty( ){ for( int i = 0 ; i 阅读全文
posted @ 2012-07-01 08:44 wutaoKeen 阅读(158) 评论(0) 推荐(0) 编辑