void ReadConditionsData(char *conditionsStream, int & source, int & dest, Conditions & conditions) { int i = 0; source = ReadANumberFromStr(conditionsStream, i); dest = ReadANumberFromStr(conditionsStream, i); while(conditionsStream[i] != '\0') { conditions.insert(ReadANumberFromStr(conditionsStream, i)); } }
void ReadGraphData(char * graphStream[5000], Graph & graph, EdgeInfoDict & edgeInfoDict) { for(int i = 0; graphStream[i] != 0x0 && i < 5000; ++i) { int j = 0; int edgeNo = ReadANumberFromStr(graphStream[i], j); int edgeFrom = ReadANumberFromStr(graphStream[i], j); int edgeTo = ReadANumberFromStr(graphStream[i], j); int edgeCost = ReadANumberFromStr(graphStream[i], j); graph[edgeFrom].insert(edgeTo); Edge edge(edgeFrom, edgeTo); EdgeInfo edgeInfo(edgeNo, edgeCost); // 如果边信息字典中已经有了这条边且当前权大于字典中的权, 则不更新字典 // 否则就要更新字典(可能是插入新边, 也可能是更新旧边) if(!(edgeInfoDict.count(edge) && edgeCost > edgeInfoDict[edge].second)) { edgeInfoDict[edge] = edgeInfo; } } }