Rating:1918 | A:hdu 2586 预处理出每个点到根节点距离,c为ab的公共祖先,s[i]表示i点距离根节点的距离,查询a和b直接的距离=s[a]+s[b]-s[c]、对于询问次数比较多的时候,可以先把所以的询问线保存在邻接表里面,然后在预处理的时候,顺便去判断下是否有该询问,有的话,直接记录答案。 B:poj 1679 判断最小生成树是否唯一,先求一次最小生成树,然后把他的每一条边标记下,然后每次枚举一条标记的边删去后所构成的最小生成树的权值和是否和之前求得的最小生成树的权值和一样,如果存在一样的情况的话,说明构成的最小生成树不唯一。 C:poj 2457 用邻接表记录有向边,求最短路径,同时用一个数组来记录他的出发点,在倒过来输出即可。 D:poj 2367 基础的拓扑排序,记录下排序的结果输出即可。 E:hdu 3478 从给点的起始点黑白染色下,若可以,则输出NO,不可以则输出YES。 F:hdu 2458 题目给定的是认识的异性朋友的关系,也就是其他的异性朋友不认识的,用匈牙利算法记录求的异性朋友不认识的关系的最大匹配值X(也就是把每一对不认识的人选取一个人出来),所以人都互相认识的最大集合=N+M-X,就是答案。 |