摘要:
View Code /*【题目来源】http://soj.me/show_problem.php?pid=1004&cid=567【题目分析】 与longth way 类似 这个好象就是传说中的六度人脉,你只要通过六度人脉就可以找到世界上的任何一个人。假设一个人一生会认识N个人,那N+N^1+N^2+N^3+N^4+N^5+N^6>=世界总人数。给定一些边确定一个图,即给定一些点之间的连通情况,求出各点到0的最短路径 【思路分析】 1.邻接表构图 2.以0为树根,层次遍历,求出其他各点的深度 即为所求 【小小心得】 刚开始还去用struct表示Node其实只用一个邻接表就行了 邻 阅读全文
摘要:
View Code /* 【题目来源】http://soj.me/show_problem.php?pid=1003&cid=567【题目分析】给定一些边确定一个图,即给定一些点之间的连通情况,保证给定的图没有回路,要求输出该图存在的最长路径。 【思路分析】. 根据给定信息构造图,用邻接表表示。(邻接矩阵明显很麻烦且效率不高) . 将每一个顶点看成是树根,求出树的高度。. 得到一系列树的高度,最大的那个就是图中存在的最长路径。嗯对的。 【陷阱分析】.不应该被数据蒙骗,比如只给两条边但顶点不一定是1,2,3而有可能是1,99,100之类,所以数组开最大(题目范围1-100,所以开个105 阅读全文
摘要:
/*【题目来源】http://soj.me/show_problem.php?pid=1005&cid=567【题目分析】 国际象棋棋盘上,给定起点和终点,求出马(knight --!)起点到终点 所需要走的步数【思路分析】 打表:构造一个64*64的表格 行和列都为a1,a2……h7,h8 (i,j)表示从点i到 点j所需要走的最小步数。注意这里的i,j均抽象为一个点,如(1,13) 表示 i = 1 j = 13 也就是 (a1,b5) 打表的复杂度较高。但打完表后,以后每输入一个测试数据,输出结果的时间复杂度都是O(1). 唯一要注意的地方是坐标的转换 0表示a1 8表示b1 … 阅读全文