# 1741 Tree （树的分治，点分治）

http://hi.baidu.com/strongoier/item/fe47a4191c18a37c1009b515

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <string>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

#define FE(i, a, b) for(int i = (a); i <= (b); ++i)
#define FD(i, b, a) for(int i = (b); i >= (a); --i)
#define REP(i, N) for(int i = 0; i < (N); ++i)
#define CLR(a, v) memset(a, v, sizeof(a))
#define PB push_back
#define MP make_pair

#define RI(n) scanf("%d", &n)
#define RIII(a, b, c) scanf("%d%d%d",&a, &b, &c)

typedef long long LL;
const double eps = 1e-10;
const int maxn = 10010;

int a[maxn], an;
int sz[maxn], szn;
int f[maxn], d[maxn];
int n, m;
int cur;///curroot
int ans;

struct Edge {
int to, w, next;
bool mk;
{
}

void find_root(int u, int fa)///找分治点
{
sz[u] = 1;///
f[u] = 0;
{
if (adj[r].mk && v != fa)
{
find_root(v, u);
sz[u] += sz[v];
f[u] = max(f[u], sz[v]);
}
}
f[u] = max(f[u], szn - sz[u]);
if (f[u] < f[cur]) cur = u;
}

void dfs(int u, int fa)
{
sz[u] = 1;///
a[an++] = d[u];
{
if (adj[r].mk && v != fa)
{
dfs(v, u);
sz[u] += sz[v];
}
}
}

int calc(int x, int initval)
{
int ret = an = 0;
d[x] = initval;
dfs(x, 0);
sort(a, a + an);
int l = 0, r = an - 1;
for (; l < r;)///!!!
{
if (a[r] + a[l] <= m)
ret += r - l++;
else r--;
}
return ret;
}

void solve(int u)
{
ans += calc(u, 0);
{
{

f[0] = szn = sz[v];
find_root(v, cur = 0);
solve(cur);
}
}
}

int main ()
{
int x, y, w;
while (scanf("%d%d", &n, &m) != EOF && n + m )
{
ans = 0;
for (int i = 0; i < n - 1; i++)
{
scanf("%d%d%d", &x, &y, &w);
}
f[0] = szn = n;
find_root(1, cur = 0);
solve(cur);
printf("%d\n", ans);
}
return 0;
}


• 本文已收录于以下专栏：

## POJ 1741 Tree 树的点分治

Treepoj 1741#include #include #include #include #include using namespace std; const int maxn = 10100...

## POJ 1741 Tree DP+树的点分治

POJ 1741 Tree DP+树的点分治
• wzq_QwQ
• 2015年07月22日 14:54
• 719

## 【树的点分治模版】POJ 1741 Tree

http://poj.org/problem?id=1741 从来没打过版，打了一个 五个变量&数组：cnt、mx、root、size、flag cnt、mx只在getroot中更新 divi...

## POJ - 1741 Tree 【树的点分治模板题】

• 2017年10月18日 21:21
• 80

## POJ 1741 Tree + POJ 1987 Distance Statistics【树的点分治】

Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13558 Accepted: 4367 ...

## POJ 1741 Tree (树分治之点分治)

举报原因： 您举报文章：1741 Tree （树的分治，点分治） 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)