訪問計劃(C++)

題目描述

Farmer John 計劃建造 N(1≤N≤10^5)個農場,用 N?1 條道路連接,構成一棵樹(也就是說,所有農場之間都互相可以到達,并且沒有環)。每個農場有一頭奶牛,品種為更賽牛或荷斯坦牛之一。

Farmer John 的 M 個朋友(1≤M≤10^5)經常前來拜訪他。在朋友 i 拜訪之時,Farmer John 會與他的朋友沿著從農場 Ai 到農場 Bi 之間的唯一路徑行走(可能有 Ai=Bi)。除此之外,他們還可以品嘗他們經過的路徑上任意一頭奶牛的牛奶。由于 Farmer John 的朋友們大多數也是農場主,他們對牛奶有著極強的偏好。他的有些朋友只喝更賽牛的牛奶,其余的只喝荷斯坦牛的牛奶。任何 Farmer John 的朋友只有在他們訪問時能喝到他們偏好的牛奶才會高興。

請求出每個朋友在拜訪過后是否會高興。

輸入格式

輸入的第一行包含兩個整數 N 和 M。 第二行包含一個長為 N 的字符串。如果第 i 個農場中的奶牛是更賽牛,則字符串中第 i 個字符為 'G',如果第 i 個農場中的奶牛是荷斯坦牛則為 'H'。 以下 N?1 行,每行包含兩個不同的整數 X 和 Y(1≤X,Y≤N),表示農場 X 與 Y 之間有一條道路。 以下 M 行,每行包含整數 Ai,Bi,以及一個字符 Ci。Ai 和 Bi 表示朋友 i 拜訪時行走的路徑的端點,Ci 是 'G' 或 'H' 之一,表示第 i 個朋友喜歡更賽牛的牛奶或是荷斯坦牛的牛奶。

輸出格式

輸出一個長為 M 的二進制字符串。如果第 i 個朋友會感到高興,則字符串的第 i 個字符為 '1',否則為 '0'。

樣例輸入
5 5
HHGHG
1 2
2 3
2 4
1 5
1 4 H
1 4 G
1 3 G
1 3 H
5 5 H
樣例輸出
10110
提示

在這里,從農場 1 到農場 4 的路徑包括農場 1、2 和 4。所有這些農場里都是荷斯坦牛,所以第一個朋友會感到滿意,而第二個朋友不會。 測試點 2-5 滿足 N≤10^3,M≤2?10^3。

?思路

運用并查集,將相連的且有相同種類的農場并在一起。

判斷時有三種情況:

1.起點和終點不在同一集合,說明路上一定會有兩種奶牛,記為'1';

2.起點和終點在同一集合,且奶牛種類為朋友要求的,記為'1';

3.起點和終點在同一集合,但奶牛種類不是朋友要求的,記為'0'。

代碼(可自行優化)

#include<bits/stdc++.h>
using namespace std;
int n, m, u, v,num=0;
int father[100100];
char q[100100],p[100100];int find(int t) {if (father[t] != t) {father[t] = find(father[t]);}return father[t];
}int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {cin >> q[i];}for (int i = 1; i <= n; i++) {father[i] = i;}for (int i = 1; i < n; i++) {scanf("%d%d", &u, &v);if (q[u] == q[v]) {if (find(u) != find(v)) {father[find(u)] = find(v);}}}for (int i = 1; i <= m; i++) {int a, b;char c;scanf("%d%d", &a, &b);cin>>c;if (find(a) != find(b)) p[num]='1',num++;else {if (q[find(a)] == c) p[num]='1',num++;else p[num]='0',num++;}} for(int i=0;i<num;i++) cout<<p[i];return 0;
}

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

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

相關文章

時間同步服務

時間同步:多主機協作工作時&#xff0c;各個主機的時間同步很重要&#xff0c;時間不一致會造成很多重要應用的故障&#xff0c;如:加密協議&#xff0c;日志&#xff0c;集群等&#xff0c;利用NTP(Network Time Protocol )協議使網絡中的各個計算機 時間達到同步。目前NTP協議…

Cordova開發自定義插件的方法

Cordova開發自定義插件的方法 文章目錄 Cordova開發自定義插件的方法[TOC](文章目錄) 一、自定義插件二、android下的自定義插件開發&#xff08;一&#xff09;步驟1、建立cordova工程2、建立自定義插件&#xff08;1&#xff09; 安裝plugman&#xff08;2&#xff09; 用plu…

【libm】2整數接口(int_traits.rs)

一、源碼 int_traits.rs文件定義了兩個核心 trait MinInt 和 Int&#xff0c;為整數類型提供統一的抽象接口&#xff0c;并通過宏為所有原生整數類型&#xff08;i8 ~ i128/u8 ~ u128&#xff09;實現這些 trait。 use core::{cmp, fmt, ops};/// Minimal integer implementa…

WebSocket實戰經驗

WebSocket實戰經驗詳解 WebSocket基礎概念 #mermaid-svg-sdkZP4UrWBpk2Hco {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sdkZP4UrWBpk2Hco .error-icon{fill:#552222;}#mermaid-svg-sdkZP4UrWBpk2Hco .error-tex…

【C/C++】MQTT

文章目錄 MQTT 協議1 基本概念2 核心特性3 核心組件4 C 簡易實現&#xff08;基于 Paho MQTT 庫&#xff09;環境準備示例代碼 不同mqtt對比關鍵差異說明 MQTT 協議 1 基本概念 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級的發布/訂閱模式…

《Java 高并發程序設計》筆記

&#x1f4a1; 根據 遺忘曲線&#xff1a;如果沒有記錄和回顧&#xff0c;6天后便會忘記75%的內容 讀書筆記正是幫助你記錄和回顧的工具&#xff0c;不必拘泥于形式&#xff0c;其核心是&#xff1a;記錄、翻看、思考 ::: 書名Java 高并發程序設計作者葛一鳴、郭超狀態已讀完簡…

Fine Structure-Aware Sampling(AAAI 2024)論文筆記和啟發

文章目錄 本文解決的問題本文提出的方法以及啟發 本文解決的問題 傳統的基于Pifu的人體三維重建一般通過采樣來進行學習。一般選擇的采樣方法是空間采樣&#xff0c;具體是在surface的表面隨機位移進行樣本的生成。這里的采樣是同時要在XYZ三個方向上進行。所以這導致了一個問…

【AI面試準備】性能測試與AI模型結合應用指南

面試題&#xff1a; 性能測試&#xff1a;AI模型預測系統瓶頸&#xff08;如LoadRunnerAI模塊&#xff09;。 性能測試與AI模型預測系統瓶頸的結合是當前軟件工程和運維領域的重要趨勢&#xff0c;能夠顯著提升系統優化效率和問題預測能力。以下從核心概念、技術實現、快速掌握…

Spring MVC 與 FreeMarker 整合

以下是 Spring MVC 與 FreeMarker 整合的詳細步驟&#xff0c;包含配置和代碼示例&#xff1a; 1. 添加依賴 在 pom.xml 中引入 Spring MVC 和 FreeMarker 的依賴&#xff08;以 Maven 為例&#xff09;&#xff1a; <!-- Spring Web MVC --> <dependency><gr…

Redis分布式鎖使用以及對接支付寶,paypal,strip跨境支付

本章重點在于如何使用redis的分布式鎖來鎖定庫存。減少超賣&#xff0c;同時也對接了支付寶&#xff0c;paypal&#xff0c;strip跨境支付 第一步先建立一個商品表 CREATE TABLE sys_product (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主鍵,code varchar(60) DEFAUL…

使用frpc鏈接內網的mysql

以下是配置 frpc 連接內網 MySQL 服務的詳細步驟&#xff1a; 1. 準備工作 frps 服務器&#xff1a;已部署在公網 IP 11.117.11.245&#xff0c;假設 frps 的默認端口為 7000。 內網 MySQL 服務&#xff1a;運行在內網機器的 3306 端口。 目標&#xff1a;通過公網 IP 11.117…

2025信息安全網絡安全意識培訓資料匯編(24份)

最新整理&#xff1a;2025信息安全網絡安全意識培訓資料匯編&#xff0c;共24份資料&#xff0c;供學習參考。 互聯網信息安全意識培訓.pptx100個網絡安全風險防范知識.pptx亞信信息安全意識培訓.pptx網絡安全法規及意識培訓.pptx網絡安全意識與案例分析.pptx綠盟-安全意識培訓…

JAVA:使用 XStream 實現對象與XML轉換的技術指南

1、簡述 XStream 是一個簡單便捷的 Java 庫,用于對象與 XML 的相互轉換。其主要特點是: 易于使用:無需復雜的配置即可直接使用。支持自定義:可以靈活地定制對象的序列化和反序列化規則。強大的功能:支持注解、自定義轉換器等。本文將詳細介紹 XStream 的基本使用方法,并…

VITA STANDARDS LIST,VITA 標準清單下載

VITA STANDARDS LIST&#xff0c;VITA 標準清單下載 DesignationTitleAbstractStatusVMEbus Handbook, 4th EditionA users guide to the VME, VME64 and VME64x bus specifications - features over 70 product photos and over 160 circuit diagrams, tables and graphs. The…

Assetto Corsa 神力科莎 [DLC 解鎖] [Steam] [Windows]

Assetto Corsa 神力科莎 [DLC 解鎖] [Steam] [Windows] 需要有游戲正版基礎本體&#xff0c;安裝路徑不能帶有中文&#xff0c;或其它非常規拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后續可能無法及時更新文章&#xff0c;具體最新版本見下載文件說明 DLC 解鎖列表&…

【Java idea配置】

IntelliJ IDEA創建類時自動生成注釋 /** * program: ${PROJECT_NAME} * * since: jdk1.8 * * description: ${description} * * author: ${USER} * * create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} **/自動導入和自動移除無用導入 idea彩色日志不生效 調試日志輸出 在…

計算方法實驗六 數值積分

【實驗性質】綜合性實驗。 【實驗目的】理解插值型積分法&#xff1b;掌握復化積分法算法。 【實驗內容】 1對 &#xff0c;用復化梯形積分和變步長梯形積分求值&#xff08;截斷誤差不超過&#xff09;。 【理論基礎】 積分在工程中有重要的應用&#xff0c;數值積分…

Webug4.0靶場通關筆記11- 第15關任意文件下載與第16關MySQL配置文件下載

目錄 一、文件下載 二、第15關 任意文件下載 1.打開靶場 2.源碼分析 3.滲透實戰 三、第16關 MySQL配置文件下載 1.打開靶場 2.源碼分析 3.滲透實戰 &#xff08;1&#xff09;Windows系統 &#xff08;2&#xff09;Linux系統 四、滲透防御 一、文件下載 本文通過…

小土堆pytorch--tensorboard的使用

小土堆pytorch--tensorboard的使用 小土堆pytorch--tensorboard的使用0.介紹1.使用tensorboard繪制 y x 等簡單函數1.1 相應的代碼1.2 對上述代碼的解釋1.3 可能遇到的問題1.3.1 問題1.3.2 解決方法 2.使用tensorboard加載數據集中的圖片2.1 相應代碼2.2 對上述代碼的解釋2.2.…

大模型(LLMs)RAG 版面分析——文本分塊面

大模型&#xff08;LLMs&#xff09;RAG 版面分析——文本分塊面 一、為什么需要對文本分塊&#xff1f; 二、能不能介紹一下常見的文本分塊方法&#xff1f; 2.1 一般的文本分塊方法 2.2 正則拆分的文本分塊方法 2.3 Spacy Text Splitter 方法 2.4 基于 langchain 的 Cha…