尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

打卡信奥刷题(3488)用C++实现信奥题 P10725 [GESP202406 八级] 最远点对 P10725 [GESP202406 八级] 最远点对题目背景对应的选择、判断题https://ti.luogu.com.cn/problemset/1156题目描述小杨有一棵包含n nn个节点的树这棵树上的任意一个节点要么是白色要么是黑色。小杨想知道相距最远的一对不同颜色节点的距离是多少。输入格式第一行包含一个正整数n nn代表树的节点数。第二行包含n nn个非负整数a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_na1​,a2​,⋯,an​对于所有的1 ≤ i ≤ n 1\le i\le n1≤i≤n均有a i a_iai​等于0 00或1 11其中如果a i 0 a_i0ai​0则节点i ii的颜色为白色如果a i 1 a_i1ai​1则节点i ii的颜色为黑色。之后( n − 1 ) (n-1)(n−1)行每行包含两个正整数x i , y i x_i,y_ixi​,yi​代表存在一条连接节点x i x_ixi​和y i y_iyi​的边。保证输入的树中存在不同颜色的点。输出格式输出一个整数代表相距最远的一对不同颜色节点的距离。输入输出样例 #1输入 #15 0 1 0 1 0 1 2 1 3 3 4 3 5输出 #13说明/提示样例解释相距最远的不同颜色的一对节点为节点2 22和5 55。数据范围本题采用捆绑测试。子任务编号得分n nna i a_iai​特殊条件1 1130 3030≤ 10 5 \le 10^5≤1050 ≤ a i ≤ 1 0\le a_i\le 10≤ai​≤1树的形态为一条链2 2230 3030≤ 10 3 \le 10^3≤1030 ≤ a i ≤ 1 0\le a_i\le 10≤ai​≤13 3340 4040≤ 10 5 \le 10^5≤1050 ≤ a i ≤ 1 0\le a_i\le 10≤ai​≤1对于全部数据保证有2 ≤ n ≤ 10 5 2\le n\le 10^52≤n≤1050 ≤ a i ≤ 1 0\le a_i\le 10≤ai​≤1。C实现#includeiostream#includecstdiousingnamespacestd;constintN1e510,inf1e910;intn,to[2*N],nxt[2*N],ver[N],c[N],idx,ans,dp[N][2];voidadd(intx,inty){to[idx]y,nxt[idx]ver[x],ver[x]idx;}voiddfs(intx,intfa){dp[x][0]dp[x][1]-inf;dp[x][c[x]]0;for(intiver[x];i;inxt[i]){if(to[i]fa)continue;intyto[i];dfs(y,x);ansmax(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;}intmain(){scanf(%d,n);for(inti1;in;i)scanf(%d,ci);for(inti1,u,v;in;i){scanf(%d %d,u,v);add(u,v),add(v,u);}dfs(1,0);printf(%d\n,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
返回列表