摘要: 思路:我们其实只需要枚举每条边,求得最小值就行了。先dfs算出每个节点作为根时,其子树的最长路径,以及进过该节点的最长,次长,第三长路径。然后在次dfs枚举求出切断某条边,求出这条边的两个端点为子树根,其子树的最长路径。b就是其中较大的。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#define Maxn 200010using namespace std;int road[Maxn],Max[Maxn],lMax 阅读全文
posted @ 2013-08-16 15:50 fangguo 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 思路:首先看到这题以为能用poj1904的模版直接A掉,WA了几次,然后又TLE了几次。还是想到了正解。一开始我想的大致方向已经是对的了。先是由王子向每个喜欢的公主建边,再求一次最大匹配,找出匹配后,由匹配的公主向王子建边。但可能会有没有匹配到的公主和王子,那么这个王子可以和任何它喜欢的公主结婚,这个公主也可以和任何喜欢她的王子结婚。因为这些不在匹配中的点,加到匹配中后,减少的匹配数和增加的匹配数都是1。我们也就想像poj1904那样,将他们变为一个强连通分量,我开始出错就在这。直接在原图上将他们建边变为强连通分量会使原图性质发生改变。所有我们对每个没有匹配的公主,建一个虚拟的王子,让他们变成 阅读全文
posted @ 2013-08-16 15:36 fangguo 阅读(541) 评论(0) 推荐(0) 编辑