洛谷 P10113 [GESP202312 八級] 大量的工作溝通-普及/提高-

題目描述

某公司有 N N N 名員工,編號從 0 0 0 N ? 1 N-1 N?1。其中,除了 0 0 0 號員工是老板,其余每名員工都有一個直接領導。我們假設編號為 i i i 的員工的直接領導是 f i f_i fi?

該公司有嚴格的管理制度,每位員工只能受到本人或直接領導或間接領導的管理。具體來說,規定員工 x x x 可以管理員工 y y y,當且僅當 x = y x=y x=y,或 x = f y x=f_y x=fy?,或 x x x 可以管理 f y f_y fy?。特別地, 0 0 0 號員工老板只能自我管理,無法由其他任何員工管理。

現在,有一些同事要開展合作,他們希望找到一位同事來主持這場合作,這位同事必須能夠管理參與合作的所有同事。如果有多名滿足這一條件的員工,他們希望找到編號最大的員工。你能幫幫他們嗎?

輸入格式

第一行一個整數 N N N ,表示員工的數量。

第二行 N ? 1 N-1 N?1 個用空格隔開的正整數,依次為 f 1 , f 2 , … f N ? 1 f_1, f_2, \dots f_{N-1} f1?,f2?,fN?1?

第三行一個整數 Q Q Q ,表示共有 Q Q Q 場合作需要安排。

接下來 Q Q Q 行,每行描述一場合作:開頭是一個整數 m m m 2 ≤ m ≤ N 2 \leq m \leq N 2mN),表示參與本次合作的員工數量;接著是 m m m 個整數,依次表示參與本次合作的員工編號(保證編號合法且不重復)。

保證公司結構合法,即不存在任意一名員工,其本人是自己的直接或間接領導。

輸出格式

輸出 Q Q Q 行,每行一個整數,依次為每場合作的主持人選。

輸入輸出樣例 #1

輸入 #1

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

輸出 #1

2
2
0

輸入輸出樣例 #2

輸入 #2

7
0 1 0 2 1 2
5
2 4 6
2 4 5
3 4 5 6
4 2 4 5 6
2 3 4

輸出 #2

2
1
1
1
0

說明/提示

樣例解釋 1

對于第一場合作,員工 3 , 4 3,4 3,4 有共同領導 2 2 2 ,可以主持合作。

對于第二場合作,員工 2 2 2 本人即可以管理所有參與者。

對于第三場合作,只有 0 0 0 號老板才能管理所有員工。

數據范圍

對于 25 % 25\% 25% 的測試點,保證 N ≤ 50 N \leq 50 N50

對于 50 % 50\% 50% 的測試點,保證 N ≤ 300 N \leq 300 N300

對于所有測試點,保證 3 ≤ N ≤ 10 5 3 \leq N \leq 10^5 3N105 Q ≤ 100 Q \leq 100 Q100 m ≤ 10 4 m \leq 10^4 m104


2024/2/8 添加一組 hack 數據。

solution

題目要求找編號最小的共同祖先,比較高效的做法是找出每個節點的歐拉序,這樣就可以保證同一個子樹的序列是連續的,對于每一組數據,只用根據最大的歐拉序和最小的歐拉序就可以確定其公共祖先了。

代碼

#include <iostream>
#include "bit"
#include "vector"
#include "unordered_set"
#include "set"
#include "queue"
#include "algorithm"
#include "bitset"using namespace std;int n, m, dfn[100001], dfm[100001], x, id = -1;
vector<int> son[100001];void dfs(int u){dfn[u] = ++id;for(int v : son[u]){dfs(v);}dfm[u] = id;
}int dfs2(int u, int Ma, int Mi){int ans = u;for(int v : son[u]){if(dfn[v] <= Mi && dfm[v] >= Ma) {int t = dfs2(v, Ma, Mi);ans = max(ans, t);break;}}return ans;
}int main() {cin >> n;for (int i = 1; i < n; i++) {cin >> x;son[x].push_back(i);}dfs(0);cin >> m;for(int i = 0; i < m; i++){int k, Ma = 0, Mi = n - 1;cin >> k;for(int j = 0; j < k; j++){cin >> x;Mi = min(Mi, dfn[x]);Ma = max(Ma, dfn[x]);}cout << dfs2(0, Ma, Mi) << endl;}
}

結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88306.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數組題解——移除元素?【LeetCode】

27. 移除元素 快慢指針法 算法思路 使用雙指針&#xff08;fast和slow&#xff09;遍歷數組。 fast指針遍歷每一個元素。slow指針指向下一個將被保留的位置。 如果nums[fast] ! val&#xff0c;就把nums[fast]賦值到nums[slow]&#xff0c;并將slow向前移動一位。遍歷結束后…

ubuntu20.04安裝多版本python時,如何使用sudo python3.10

sudo 命令只會加載基本的path和動態庫&#xff0c;自己定義的不會加入&#xff0c;因此會出現使用sudo運行多版本python出現奇怪的現象&#xff0c;進行如下操作就可以使用 sudo vi ~/.bashrc alias sudosudo env PATH$PATH LD_LIBRARY_PATH$LD_LIBRARY_PATH 使用 sudo visud…

統計學純基礎(1)

?統計分析分為統計描述與統計推斷&#xff0c;統計推斷分為總體估計與假設檢驗 &#x1f3c2;16&#xff1a;45 醫學研究--基礎研究、轉化醫學研究、臨床研究 臨床研究--病因學研究、診斷準確性試驗、預后研究、療效研究 一般認為3個月以內的預后屬于近期預后&#xff0c;…

接口自動化測試之pytest 運行方式及前置后置封裝

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 一、Pytest 優點認知 1.可以結合所有的自動化測試工具 2.跳過失敗用例以及失敗重跑 3.結合allure生產美觀報告 4.和Jenkins持續集成 5.很多強大的插件 pytest-htm…

利用folium實現全國高校分布地圖顯示

智匯中國 | 揭秘!一張地圖帶你遨游全國高校殿堂 大家好,這期我們來利用folium模塊實現全國高校分布的地圖顯示。 什么是Folium Folium為Python用戶提供了便捷的方式來利用Leaflet.js的強大地圖可視化功能,而無需直接編寫JavaScript代碼。它允許開發者以Pythonic的方式處理…

【和春筍一起學C++】(二十二)C++函數新特性——函數重載

目錄 函數重載的含義 重載函數使用注意事項 幾種特殊情況 函數重載的含義 函數重載使得能夠用不同的參數列表調用多個同名的函數。可以通過函數重載設計一系列函數,它們完成相同的工作,但使用不同的參數列表。 函數重載的關鍵是函數的參數列表——也被稱為函數特征標。如…

CrewAI多智能體框架的實操教程-旅行規劃-2

1、創建一個新的 CrewAI 項目 surprise_trip crewai create crew surprise_trip 選擇模型廠商和模型 生成.env MODELgpt-4o OPENAI_API_KEY你的api_keySERPER_API_KEY你的SERPER api_key 2、探索項目結構 3、配置代理 修改 agents.yaml文件。 # 個性化活動規劃師 Agent p…

vue腳手架與前后端交互

前言 。Vue.js作為一種流行的前端框架&#xff0c;提供了豐富的功能和靈活的架構&#xff0c;方便了開發者進行高效的開發。為了更好地使用Vue&#xff0c;Vue CLI&#xff08;腳手架工具&#xff09;成為了開發者進行項目創建和管理的重要工具。本文將結合Vue腳手架的使用場景…

【麻省理工】《how to speaking》筆記

【【麻省理工】《如何說話》一節課教你成為表達的王者】 開始 在演講最開始的時候&#xff0c;你要告訴觀眾&#xff0c;在接下來的15分鐘或一個小時之內&#xff0c;他們將會學到什么東西。這會讓觀眾集中注意力去傾聽。 PPT 你的幻燈片上的字要越少越好。因為聽眾的大腦一…

ESP32-HTML-08

一、html顯示圖片 1.工程包含Html需要顯示的圖片 2、CMakeLists.txt包含圖片資源 舉例&#xff1a; idf_component_register(SRCS main.cEMBED_FILES root.html favicon.ico) 3.html中圖片的標簽 <img src"motus.ico"> 4.后臺代碼的添加 static esp_e…

前端后端文件下載防抖實現方案

在 Vue 3 中實現下載文件防抖&#xff0c;可以通過封裝一個防抖函數來控制下載請求的觸發頻率。以下是完整的實現方案&#xff1a; 1. 封裝防抖工具函數 javascript 復制 下載 // utils/debounce.js export function debounce(func, delay) {let timer null;return funct…

【Linux網絡與網絡編程】15.DNS與ICMP協議

1. DNS 1.1 DNS介紹 TCP/IP 中使用 IP 地址和端口號來確定網絡上的一臺主機的一個程序&#xff0c;但是 IP 地址不方便記憶&#xff0c;于是人們發明了一種叫主機名的字符串&#xff0c;并使用 hosts 文件來描述主機名和 IP 地址的關系。最初, 通過互連網信息中心(SRI-NIC)來…

Python打卡:Day35

復習日 浙大疏錦行

GoAdmin代碼生成器實踐

文章目錄 前言創建SQL表格使用在線生成工具應用自動生成的代碼數據變更時附加新的邏輯總結 前言 開源項目 go-admin&#xff0c;我一直用的是這個地址 https://github.com/GoAdminGroup/go-admin&#xff0c;不過最近發現了一個 Gin Vue 版本的 go-admin&#xff0c;對我解決…

web布局13

在 CSS 中有很多種類型的函數&#xff0c;其中可用于尺寸屬性的函數主要有 calc() 、min() 、max() 、clamp() 等。這些 CSS 函數都可用來設置網格軌道尺寸&#xff0c;除此之外&#xff0c;還有一些專門用于設置網格軌道的函數&#xff0c;比如 repeat() 、minmax() 和 fit-co…

pdf轉圖片(png,jpg)的python腳本

pdf轉圖片&#xff08;png&#xff0c;jpg&#xff09;的python腳本 PDF轉圖片工具 1.安裝庫 pip install pymupdf 2.如果需要pdf轉jpg的更改DEFAULT_FORMAT即可 3.一定注意要將腳本與待轉化的.pdf文件放在同一個目錄 4.運行腳本&#xff0c;將腳本所在目錄所有.pdf文件轉…

大模型本地部署,擁有屬于自己的ChatGpt

ChatGpt 以其強大的信息整合和對話能力驚艷了全球,在自然語言處理上面表現出了驚人的能力。不管用于文案撰寫還是程序輔助開發都大大提高了我們的工作效率,但是其使用有一定的門檻,讓我們大多數人都望而卻步,今天我們利用ollama實現本地大模型的步驟,讓我們輕松擁有自己的…

【mcu】-老舊小區門禁電話改造指南

老舊小區門禁電話改造指南(四線制DIY方案) 一、明確四根線的功能(關鍵第一步) 通常四線制門禁電話的線纜定義如下(需用萬用表驗證): 線色 常見功能 電壓/信號類型 檢測方法 紅線 電源正極(+12V) DC 12V(待機) 萬用表直流檔測對黑線電壓 黑線 電源負極(GND) 0V 與…

word中如何快速打出上標?

在 Microsoft Word 中快速輸入上標的方法有以下幾種&#xff0c;推薦掌握 鍵盤快捷鍵法&#xff08;最常用高效&#xff09;&#xff1a; ? 方法一&#xff1a;快捷鍵法&#xff08;強烈推薦&#xff0c;效率最高&#xff01;&#xff09; 輸入需要上標的文字/數字&#xff0…

如何優化HarmonyOS 5的分布式通信性能?

以下是針對HarmonyOS 5分布式通信性能優化的系統性方案&#xff0c;結合核心技術特性與實踐經驗&#xff1a; 一、傳輸層優化 數據壓縮與批處理 // 啟用ZLIB壓縮&#xff08;>1KB自動壓縮&#xff09; DistributedConfig config new DistributedConfig.Builder().setCom…