摘要:pku1178: http://poj.org/problem?id=1178题意:给出一行字符串,每对字母+数字表示棋盘上的一点,如A表示横坐标为1,B表示横坐标为2等,第一对表示王,只可上下左右移动,后面每一对表示一个马,走法跟象棋一样(没有算马脚),若马与王到了同一个格子,马可以带着王走,求总的最少需要多少步可使所有马和王汇集到一个格子里解法:floyd+3个枚举:先用floyd算出马在每个点到其他点的最小步数,再3层枚举:第一层枚举所有成员聚集点,第二层枚举马接王的点,第三层枚举求出马接王再到达聚集点中需要步数最小的马code:#include<iostream>#incl
阅读全文
摘要:pku1125: http://poj.org/problem?id=1125题意:群发短信:给出n个群发者,输出的第i行的第一个输出k表示第i个发信息者可以给k个人发短信,接着输出k对数据,每对两个数分别表示被联系者的编号和与其联系时间,问由哪个人群发短信花费的时间最短,转化为最短路问题即为:给出每个点到其他点的距离,求所有点到其他点最长距离的最小值,并输出该起点解法:floyd求出每个点到各点的最短路,再枚举各点,求出各个最大值,再取最小值code:#include<iostream>#include<cstdio>#include<cstdlib>in
阅读全文
摘要:hdu2112: http://acm.hdu.edu.cn/showproblem.php?pid=2112题意:求最短路,输入的各个节点是用字符串表示的。解法:Dijkstra,将字符串转为编号,用int数组存入邻接矩阵code:#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int inf=1<<29;char v[200][50];int
阅读全文