1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    public class Node
    {
        public int Value;
        public HashSet<Node> Neighbors;
 
        public Node(int value)
        {
            Value = value;
            Neighbors = new HashSet<Node>();
        }
 
        public void AddNeighbor(Node neighbor)
        {
            Neighbors.Add(neighbor);
        }
    }
 
    public class Graph
    {
        public Dictionary<int, Node> Nodes;
 
        public Graph()
        {
            Nodes = new Dictionary<int, Node>();
        }
 
        public void AddNode(int value)
        {
            if (!Nodes.ContainsKey(value))
                Nodes.Add(value, new Node(value));
        }
 
        public void AddEdge(int fromValue, int toValue)
        {
            Node fromNode = Nodes[fromValue];
            Node toNode = Nodes[toValue];
 
            if (!fromNode.Neighbors.Contains(toNode))
                fromNode.AddNeighbor(toNode);
 
            if (!toNode.Neighbors.Contains(fromNode))
                toNode.AddNeighbor(fromNode);
        }
    }
cs

'공부 > 알고리즘 및 기타 공부' 카테고리의 다른 글

Vector2 관련 연산 (C#)  (0) 2023.05.01
이진 탐색 트리 (C#)  (0) 2023.04.30
2진수 ~ 16진수 변환 (C#)  (0) 2023.04.25
이진탐색 (C#) 제네릭  (0) 2023.04.24
투 포인터 알고리즘 (C#)  (0) 2023.04.24

+ Recent posts