【发布时间】:2014-09-11 18:01:00
【问题描述】:
问题: 你有一个连接的,而不是有向图。有N个顶点。你还有一个结构数组:
struct Edge
{
int a;
int b;
}
数组 StructArray 表示所有边。数组的大小为 M。求最小值 k,以便在从 StructArray 中移除除那些边:[0...k-1] 之外的所有边后,图仍然是连通的。
我的想法 我不知道如何处理这个结构,所以我正在重建它(这可能是一个非常糟糕的方法),以创建一个邻接列表:
vector < vector <int> > edges_list(N);
现在从 StructArray 的末尾开始,每次你想删除一条边时,你都在检查边列表:
edges_list[a].size() > 1 && edges_list[b].size() > 1;
您如何看待这个解决方案?好/坏?你还有别的吗?也许保留结构而不创建新结构?
【问题讨论】:
-
你的方法对我来说看起来不错。如果边的数量很大,您可能通过将其中一个向量转换为地图来提高效率;但你可能不会这样做,除非后来证明这样做很重要。否则,您的方法看起来不错。