摘要: 可以证明从树的任意一点出发,所能到达的最远距离一定是树的最大直径的端点。所以两次bfs(),一次任意一点出发,一次端点出发,便能找到最大直径。程序代码如下:(求树上两端点的最远距离)#include #include #define MAXN 10005#define INF 999999999using namespace std;struct Edge{ int v, w, next;}edge[MAXN];int head[MAXN], vis[MAXN], d[MAXN], q[MAXN], e, n;int init(){ e = 0; memset(head, -... 阅读全文
posted @ 2013-07-26 08:19 认真的看我 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 邻接表是通过枚举所有的顶点,和顶点所能到达的所有的边来表示图的。所以有一个顶点域和边域。简单表述为struct Edge{ int v, w, next;}edge[MAXN];int e, head[MAXN];void init(){ e = 0; memset(head, -1, sizeof(head));}void add(int u, int v, int w){ edge[e].v = v; edge[e].w = w; edge[e].next = head[u]; head[u] = e++;} 阅读全文
posted @ 2013-07-26 07:59 认真的看我 阅读(139) 评论(0) 推荐(0) 编辑