每日一题 --- 亲戚[洛谷][Go]

简介: 每日一题 --- 亲戚[洛谷][Go]

题目:

解题思路:

解题代码:

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)
}


相关文章
|
移动开发 前端开发
前端(十八):移动端H5调用摄像头拍照旋转解决方案
移动端H5调用摄像头拍照旋转解决方案
650 0
|
域名解析 网络协议 网络安全
快速搭建云服务器
这篇文章教你怎么快速搭建云服务器,你可以用这个云服务器来搭建各种服务,比如可以像这篇文章一样《WordPress搭建个人博客》搭建WordPress网站。
284 5
快速搭建云服务器
|
NoSQL JavaScript 算法
Higress 全新 Wasm 运行时,性能大幅提升
本文介绍 Higress 将 Wasm 插件的运行时从 V8 切换到 WebAssembly Micro Runtime (WAMR) 的最新进展。
55830 95
|
监控 Java Perl
使用jstat工具来监控G1垃圾回收器的性能
使用jstat工具来监控G1垃圾回收器的性能
|
JavaScript API 数据处理
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
【Vue3+TypeScript】CRM系统项目搭建之 — Axiox 网络请求封装(二)
267 0
Qt绘图(线条、椭圆、矩形、图片滚动)
Qt绘图(线条、椭圆、矩形、图片滚动)
1027 3
|
项目管理
类与类之间的协作模式问题之中介者模式在项目管理中有什么作用
类与类之间的协作模式问题之中介者模式在项目管理中有什么作用
|
前端开发 JavaScript
html轮播图
简介:本博客以最通俗移动的详细代码,告诉用户如何用html构建轮播图。
417 0
html轮播图
|
数据建模 网络安全 数据库
什么是GeoTrust?
GeoTrust是著名的证书颁发机构DigiCert的品牌。GeoTrustSSL产品在Internet上提供从基本域名验证到扩展验证SSL标准支持的最高级验证的安全性。 GeoTrust OV(组织验证)证书验证域所有权和组织的存在。在颁发证书之前,会检查该组织在公共数据库中的记录、其电话号码的有效性以及该组织名称是否存在于某个域的Whois查找结果中。
266 0
什么是GeoTrust?