//엣지를 추가한다.
void SparseGraph::AddEdge(GraphEdge edge)
{
    //엣지의 양끝이 유효한 노드인지 확인한다.
    assert((edge.GetFrom() < m_iNextNodeIndex) && (edge.GetTo() < m_iNextNodeIndex) &&
           "<SparseGraph::AddEdge>: invalid node index");
    
    //유효한 노드이면
    if ((m_Nodes[edge.GetTo()].GetIndex() != -1) &&
        (m_Nodes[edge.GetFrom()].GetIndex() != -1))
    {
        //유니크한 엣지인지 확인한다.
        if (UniqueEdge(edge.GetFrom(), edge.GetTo()))
        {
            m_Edges[edge.GetFrom()].push_back(edge);
        }
        
        
        //거꾸로 방향도 확인한다.
        if (UniqueEdge(edge.GetTo(), edge.GetFrom()))
        {
            GraphEdge NewEdge = edge;
            
            NewEdge.SetTo(edge.GetFrom());
            NewEdge.SetFrom(edge.GetTo());
            
            m_Edges[edge.GetTo()].push_back(NewEdge);
        }
        
    }
}