每日一题 --- 亲戚[洛谷][Go]
2023-03-14 22:41:05 时间
题目:
解题思路:
解题代码:
package main import ( "fmt" ) var n int var res []int func main() { var ( m int p int ) fmt.Scan(&n) fmt.Scan(&m) fmt.Scan(&p) // 画圈 res = make([]int,n+1) // 初始化关系 for i := 1; i < n + 1; i++ { res[i] = i } for i := 0; i < m; i++ { a := 0 b := 0 fmt.Scan(&a) fmt.Scan(&b) join(a,b) } //for i := 1; i < n+1; i++ { // fmt.Print(res[i]," ") // //} // 检查 var ps = make([][]int,p) for i := 0; i < p; i++ { a := 0 b := 0 fmt.Scan(&a) fmt.Scan(&b) ps[i] = append(ps[i],a,b) } // 如果能在a的关系中找到b就说明a和b有关系 for i := 0; i < p; i++ { if judge(ps[i][0],ps[i][1],ps[i][0]) { fmt.Println("YES") } else { fmt.Println("NO") } } } func join(a,b int) { if judge(a,b,a) { return } // 找出a的下个元素 v := res[a] // 找出靠b最近的最后一个元素 k := find(b,b) //fmt.Print(k,"= k",v,"= v") res[a] = b res[k] = v } func find(i,j int) int { // fmt.Print(res[i],"") if res[i] == j { return i } return find(res[i],j) } func judge(a,b,c int) bool { //fmt.Print(res[a]," ") if res[a] == b { return true } if res[a] == c { return false } return judge(res[a],b,c) }
相关文章
- 区块链终端以35万元收购域名X.xyz
- 优思学院|六西格玛团队缺乏方向感怎么办?根本原因是...
- 2021双11云服务器优惠对比
- 西部数码虚拟主机怎么查ip
- ONLYOFFICE 文档 v7.3 现已发布:新增字段填写接收人角色、SmartArt、全新安全性设置、查看窗口等功能
- 这几个 GitHub 开源项目真带劲
- CATIA等设计类软件实时渲染流化解决方案
- 首个千亿模型压缩算法 SparseGPT 来了,降低算力成本的同时保持高精度
- “后红海”时代,大数据体系到底是什么?-上篇
- 「解决方案架构」解决方案架构生命周期
- Facebook改名为Meta,启用域名meta.com!
- 云上学习实践
- ECS服务器linux初体验
- 西部数码2021双11大促:云服务器1折秒杀
- 西部数码双11促销:2核2G云服务器仅需222元!
- 域名盘点:2015年TOP10!几乎都是国内投资人代购回国的域名!
- activiti 根据 流程实例ID 获取发起人
- 解决:windows下php curl https时 SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:
- 英国推进加密监管进程 有意借鉴传统金融制度
- 解决:无法将“php”项识别为 cmdlet、函数、脚本文件或可运行程序的名称