<s>[INST] This problem arises from an educational game. However, I am still stuck and so I turn to you for help. I have a picture that looks like a graph. That picture is used to pass data to different players. Within that picture, it contains one or more nodes each with a unique number and a specific type (circle, triangle, diamond). The points have coordinates also.

Now the question comes, given two numbers, can I find a route within the graph , i.e., can I traverse from the FROM node to the TO node. 

The Problem

Given a graph as an image where nodes and edges are defined, determine the reachability of the nodes from a specified node to all other nodes by traversing edges. Solve for two numbers a and b, assuming a is the starting node and b is the destination.

Constraints
1. Assume edges are bidirectional and there's no weight or label on the edges.
2. The size of the graph is medium to small
3. The number of nodes is <= 100

To check reachability of nodes a and b, we can use DFS or BFS.  
However, there are no edges available. We only have nodes.  

How do you make it into a weighted undirected graph when only the coordinates are available, how do you determine which nodes (a, b, etc..) form a node pair in the graph, then implement DFS to compute the reachability of these node pairs within the graph.

Here is the sample input data (9 nodes). 

`([508,422,'o'], [347,425,'o'], [209,415,'X'], [260,306,'o'], [80,371,'o'], [412,510,'X'], [474,477,'X'], [161,505,'o'], [488,212,'X'])`

Here is my code so far:

```python
class Node:
    def __init__(self, coord, type):
        self.coord = coord
        self.type = type
        self.is_visited = False

class Graph:
    def __init__(self):
        self.nodes = []

    def add_node(self, node):
        self.nodes.append(node)

    def run_dfs(self, start_node, end_node):
        queue = []
        start_node.is_visited = True
        queue.append(start_node)

        while queue:
            current = queue.pop(0)
            if current == end_node:
                return True
            # Check all adjacent (neighboring) nodes of current node 
            #  If not visited, mark as visited and add to queue.  
            #  How do I determine which nodes form an edge here?[/INST]