Machineboy空
ファインド 본문
ユニオンファインド木の定義
グループ分けを管理するデータ構造です。
- Union:グループ同士を併合(へいごう)
- Find:ある要素がどのグループに属して(ぞくして)いるかを見つける
クラスカル法(Kruskal Algorithm)の一つ。
- 最小全域(ぜんいき)木問題をとくアルゴリズムの一つ。
①ファインド
ユニオンファインド木において、ある要素の根を求めること
- p は q の根である
using System;
class Program
{
static int[] arr;
static void Main()
{
int n = int.Parse(Console.ReadLine());
arr = new int[n];
var line = Console.ReadLine().Split();
for(int i = 0; i < n; i++){
arr[i] = int.Parse(line[i]);
}
int x = int.Parse(Console.ReadLine());
Console.WriteLine(Find(x));
}
static int Find(int x)
{
if (arr[x] == x)
{
return x;
}
else
{
return Find(arr[x]);
}
}
}'언어 > C#' 카테고리의 다른 글
| 片方向リスト(かたほうこう) (1) | 2025.05.22 |
|---|---|
| Tuple과 foreach문의 동작 원리: 값 타입 vs 참조 타입, 인스턴스와 원본 (0) | 2025.05.21 |
| 構造体の作成 (0) | 2025.05.20 |
| 헷갈리는 2차원 배열, 리스트 정리 (0) | 2025.03.18 |
| 자주 쓰는 Math Library 함수 (0) | 2025.03.17 |
