[bzoj1912][Apio2010]patrol 巡逻

技术[bzoj1912][Apio2010]patrol 巡逻 [bzoj1912][Apio2010]patrol 巡逻无DescriptionInput
第一行包含两个整数 n, K(1 ≤ K ≤

[bzoj 1912][Apio 2010]巡逻巡逻

Description

Input

第一行包含两个整数n,K(1 K 2)。

接下来n1行,每行两个整数a,b,表示村庄a与b之间有一条道路(1 a,b n)。

Output

输出一个整数,表示新建了K条道路后能达到的最小巡逻距离。

Sample Input

8 1

1 2

3 1

3 4

5 3

7 5

8 5

5 6

Sample Output

11

HINT

3 n 100,000,1 K 2。

Solution

不建道路时方案数为2(n-1)。

建一条道路时,把树直径两段连上,答案为2(n-1)-r 1。

此基础上再建一条道路:把树直径删去,在现在的图上再求一条直径。

那么,\(k\leq10^5\)要怎么做呢

#定义N 100005

结构图{

int nxt,to,w;

[N1];

int g[N],f1[N],f2[N],N,m,mx,id,ans,CNT=1;

布尔维斯[N];

内联void addedge(int x,int y){ 0

碳纳米管.NXT=g[x];g[x]=CNT;碳纳米管.to=y;碳纳米管.w=1;

}

内联void add(int x,int y){ 0

addedge(x,y);addedge(y,x);

}

内联int dfs(int u,int fa){ 0

int s1=0,S2=0;

对于(int i=g[u],tmp我;i=e[i]。nxt)

如果(e[i].敬!=fa){ 0

tmp=e[i].w dfs(e[i]).to,u);

if(tmp S1){ 0

S2=S1 S1 S1=TMpf2[u]=f1[u];f1[u]=I;

}

否则if(tmp S2){ 0

S2=tmp F2[u]=I;

}

}

if(s1 s2mx) mx=s1 s2,id=u;

返回S1;

}

内嵌void Aireen(){ 0

n=read();m=read();

for(int I=1;在;(一)

添加(read())(read());

ans=(n-1)1;

while(m-){ 0

memset(f1,0,sizeof(f1));

memset(f2,0,sizeof(F2));

MX=id=0;dfs(1,0);ans=1-MX;

for(int I=f1[id];我;i=f1 .至e[i].w=e[i^1].w=-1;

for(int I=F2[id];我;i=f1 .至e[i].w=e[i^1].w=-1;

}

printf('%d\n ',ans);

}

2017-05-03 22:23:28

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116860.html

(0)

相关推荐

  • 吃大米会发胖吗,大米和小麦哪个吃了更容易发胖

    技术吃大米会发胖吗,大米和小麦哪个吃了更容易发胖大米和小麦哪个吃了更容易发胖?七星老农认为大米和小麦都是主粮食物吃大米会发胖吗,从它们的营养比例来看,并不是什么高脂肪食品,吃了并不会导致人体发胖,只不过七星老农认为,无论

    生活 2021年10月21日
  • 愀怎么读,afternoon怎么读音发音

    技术愀怎么读,afternoon怎么读音发音afternoon 的读音愀怎么读:[ˌɑːftəˈnuːn] 具体解析: afternoon
    英文发音:[ˌɑːftəˈnuːn]
    中文释义:n.下午(中午12点至下午6

    生活 2021年10月21日
  • PHP+Redis怎么实现点赞效果

    技术PHP+Redis怎么实现点赞效果这篇文章主要介绍“PHP+Redis怎么实现点赞效果”,在日常操作中,相信很多人在PHP+Redis怎么实现点赞效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年11月30日
  • 如何使用php工厂模式

    技术如何使用php工厂模式这篇文章主要介绍“如何使用php工厂模式”,在日常操作中,相信很多人在如何使用php工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用php工厂模式”

    攻略 2021年10月22日
  • python计算两个坐标点的距离(python怎么求两条直线的交点)

    技术Python怎么计算点到直线距离和直线间交点夹角这篇文章主要讲解了“Python怎么计算点到直线距离和直线间交点夹角”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Py

    攻略 2021年12月22日
  • Linux操作系统启动时怎样自动启用oracle standby备库日志应用

    技术Linux操作系统启动时怎样自动启用oracle standby备库日志应用这期内容当中小编将会给大家带来有关Linux操作系统启动时怎样自动启用oracle standby备库日志应用,文章内容丰富且以专业的角度为

    攻略 2021年11月30日