云计算百科
云计算领域专业知识百科平台

打卡信奥刷题(3488)用C++实现信奥题 P10725 [GESP202406 八级] 最远点对

P10725 [GESP202406 八级] 最远点对

题目背景

对应的选择、判断题:https://ti.luogu.com.cn/problemset/1156

题目描述

小杨有一棵包含

n

n

n 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。

小杨想知道相距最远的一对不同颜色节点的距离是多少。

输入格式

第一行包含一个正整数

n

n

n,代表树的节点数。

第二行包含

n

n

n 个非负整数

a

1

,

a

2

,


,

a

n

a_1,a_2,\\cdots,a_n

a1,a2,,an(对于所有的

1

i

n

1\\le i\\le n

1in,均有

a

i

a_i

ai 等于

0

0

0

1

1

1),其中如果

a

i

=

0

a_i=0

ai=0,则节点

i

i

i 的颜色为白色;如果

a

i

=

1

a_i=1

ai=1,则节点

i

i

i 的颜色为黑色。

之后

(

n

1

)

(n-1)

(n1) 行,每行包含两个正整数

x

i

,

y

i

x_i,y_i

xi,yi,代表存在一条连接节点

x

i

x_i

xi

y

i

y_i

yi 的边。

保证输入的树中存在不同颜色的点。

输出格式

输出一个整数,代表相距最远的一对不同颜色节点的距离。

输入输出样例 #1

输入 #1

5
0 1 0 1 0
1 2
1 3
3 4
3 5

输出 #1

3

说明/提示

样例解释

相距最远的不同颜色的一对节点为节点

2

2

2

5

5

5

数据范围

本题采用捆绑测试。

子任务编号得分

n

n

n

a

i

a_i

ai特殊条件

1

1

1

30

30

30

10

5

\\le 10^5

105

0

a

i

1

0\\le a_i\\le 1

0ai1

树的形态为一条链

2

2

2

30

30

30

10

3

\\le 10^3

103

0

a

i

1

0\\le a_i\\le 1

0ai1

3

3

3

40

40

40

10

5

\\le 10^5

105

0

a

i

1

0\\le a_i\\le 1

0ai1

对于全部数据,保证有

2

n

10

5

2\\le n\\le 10^5

2n105

0

a

i

1

0\\le a_i\\le 1

0ai1

C++实现

#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e5+10,inf=1e9+10;
int n,to[2*N],nxt[2*N],ver[N],c[N],idx,ans,dp[N][2];
void add(int x,int y){
to[++idx]=y,nxt[idx]=ver[x],ver[x]=idx;
}
void dfs(int x,int fa){
dp[x][0]=dp[x][1]=inf;
dp[x][c[x]]=0;
for(int i=ver[x];i;i=nxt[i]){
if(to[i]==fa)continue;
int y=to[i];dfs(y,x);
ans=max(ans,max(dp[x][1]+dp[y][0],dp[x][0]+dp[y][1])+1);
dp[x][0]=max(dp[x][0],dp[y][0]+1);
dp[x][1]=max(dp[x][1],dp[y][1]+1);
}
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",c+i);
for(int i=1,u,v;i<n;i++){
scanf("%d %d",&u,&v);
add(u,v),add(v,u);
}
dfs(1,0);
printf("%d\\n",ans);
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

赞(0)
未经允许不得转载:网硕互联帮助中心 » 打卡信奥刷题(3488)用C++实现信奥题 P10725 [GESP202406 八级] 最远点对
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!