<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      luogu:https://www.luogu.com.cn/problem/P5536

      \(n\) 座城市,\(n - 1\) 條道路,任意兩座城市能通過若干條道路互通,將其中 \(k\) 座城市定義為核心城市。
      \(k\) 座城市可以通過道路在不經(jīng)過其它城市的情況下兩兩互通。
      定義某個非核心城市與這 \(k\) 座城市的距離為這座城市到核心城市的最小距離,選擇的核心城市要滿足所有非核心城市的距離最大值最小。求出這個最小距離。

      兩遍 \(dfs\) 求直徑

      #include <bits/stdc++.h>
      using namespace std;
      #define LL long long
      const int N = 1e5 + 10;
      LL n, k, c, ans, d[N], pa[N], md[N], a[N];
      vector <LL> g[N];
      void dfs(LL u, LL fa){
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		d[v] = d[u] + 1;
      		if (d[v] > d[c]) c = v;
      		dfs(v, u);
      	}
      }
      void findC(LL u, LL fa){
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		d[v] = d[u] + 1;
      		pa[v] = u;
      		if (d[v] > d[c]) c = v;
      		findC(v, u);
      	}
      }
      void calD(LL u, LL fa){
      	md[u] = d[u];
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		d[v] = d[u] + 1;
      		calD(v, u);
      		md[u] = max(md[u], md[v]);
      	}
      }
      int main(){
      	cin >> n >> k;
      	for (int i = 1; i < n; i ++ ){
      		LL u, v;
      		cin >> u >> v;
      		g[u].push_back(v);
      		g[v].push_back(u);
      	}
      	dfs(1, 0);
      	d[c] = 0;
      	findC(c, 0);
      	LL t = d[c];
      	for (int i = 1; i <= (t + 1) / 2; i ++ )
      		c = pa[c];
      	d[c] = 0;
      	calD(c, 0);
      	for (int i = 1; i <= n; i ++ )
      		a[i] = md[i] - d[i] + 1;
      	sort(a + 1, a + n + 1, [](LL a, LL b){
      		return a > b;
      	});
      	for (int i = k + 1; i <= n; i ++ )
      		ans = max(ans, a[i]);
      	cout << ans << "\n";
      	return 0;
      }
      

      \(dp\) 求直徑

      #include <bits/stdc++.h>
      using namespace std;
      #define LL long long
      const int N = 1e5 + 10;
      LL n, k, c, dis, ans, d1[N], d2[N], d[N], pa[N], md[N], a[N];
      vector <LL> g[N];
      void dfs(LL u, LL fa){
      	d1[u] = d2[u] = 0;  //注意距離的初始化
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		dfs(v, u);
      		LL t = d1[v] + 1;
      		if (t > d1[u])
      			d2[u] = d1[u], d1[u] = t;
      		else if (t > d2[u])
      			d2[u] = t;
      	}
      	if (d1[u] + d2[u] > dis){
      		dis = d1[u] + d2[u];	//找到最長的兩條鏈之和 
      		c = u;	//重心 
      	}
      }
      void findC(LL u, LL fa){	//求出直徑的路徑 
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		d[v] = d[u] + 1;
      		pa[v] = u;
      		if (d[v] > d[c]) c = v;
      		findC(v, u);
      	}
      }
      void calD(LL u, LL fa){
      	md[u] = d[u];
      	for (auto v : g[u]){
      		if (v == fa) continue;
      		d[v] = d[u] + 1;
      		calD(v, u);
      		md[u] = max(md[u], md[v]);
      	}
      }
      int main(){
      	cin >> n >> k;
      	for (int i = 1; i < n; i ++ ){
      		LL u, v;
      		cin >> u >> v;
      		g[u].push_back(v);
      		g[v].push_back(u);
      	}
      	dfs(1, 0);
      	d[c] = 0;
      	findC(c, 0);
      	LL t = d[c];
      	for (int i = 1; i <= (t + 1) / 2; i ++ )	//找到直徑的中點 
      		c = pa[c];
      	d[c] = 0;
      	calD(c, 0);
      	for (int i = 1; i <= n; i ++ )
      		a[i] = md[i] - d[i] + 1;
      	sort(a + 1, a + n + 1, [](LL a, LL b){
      		return a > b;
      	});
      	for (int i = k + 1; i <= n; i ++ )
      		ans = max(ans, a[i]);
      	cout << ans << "\n";
      	return 0;
      }
      
      posted on 2022-05-09 14:21  Hamine  閱讀(274)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 影音先锋AV成人资源站在线播放| 国产色a在线观看| 国产无遮挡真人免费视频| 免费 黄 色 人成 视频 在 线| 又色又爽又黄18禁美女裸身无遮挡| 亚洲午夜无码久久久久蜜臀av| 激情伊人五月天久久综合| 色婷婷久久综合中文久久一本| 国产精品中文第一字幕| 亚洲午夜久久久久久噜噜噜 | 大陆精大陆国产国语精品| 九九热久久只有精品2| 秋霞电影院午夜无码免费视频| 亚洲色欲久久久久综合网| 国产精品一码二码三码四码| 精品亚洲欧美无人区乱码| 亚洲精品日韩在线观看| 久久综合色一综合色88| 黑人巨大精品oideo| 免费观看欧美猛交视频黑人| 亚洲av永久无码精品水牛影视| 欧美国产精品啪啪| 国产成人久久精品二三区| 久久天天躁狠狠躁夜夜躁2012 | 福利一区二区在线视频| 亚洲成人av在线资源网| 国产第一页浮力影院入口| 国产免费午夜福利在线播放| 17岁日本免费bd完整版观看| 亚洲av成人一区二区| 免费观看的AV毛片的网站不卡| 日韩有码精品中文字幕| 色哟哟www网站入口成人学校| 东北女人毛多水多牲交视频| 日韩中文字幕亚洲精品| 久久天天躁狠狠躁夜夜躁2012| 精品视频在线观看免费观看| 波多野结衣美乳人妻hd电影欧美| 亚洲精品一区国产欧美| 亚洲色一色噜一噜噜噜| 无码日韩精品一区二区人妻|