//엣지를 추가한다. 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); } } }