📜  门| GATE CS 2018 |简体中文第37章(1)

📅  最后修改于: 2023-12-03 14:58:20.069000             🧑  作者: Mango

门| GATE CS 2018 |简体中文第37章

本章含有GATE 2018年计算机科学考试的一道题目。本题目主要考察的是图与图的遍历,并且需要注意时间复杂度。

题目描述

给定一个带权重的无向连通图 $G = (V, E)$, 其中 $V$ 是顶点集合,$E$ 是边集合,每条边的权重都是正整数。$G$ 中一些边已被染成红色。一颗生成树 $T$ 是这样一棵树,它覆盖所有红边(每条红边都在 $T$ 中),并且和 $G$ 中的另外一些边一起构成 $T$ 的边集。

如果 $T$ 还有一个性质为所有顶点都是偶度的,则它被称为一个完美匹配树。考虑所有可能的完美匹配树中,选择深度最大的一棵树,写一个算法找到这棵树的深度。

输入格式

输入的第一行包含整数 $n$,表示图 $G$ 中的顶点数。接下来是一个 $n * n$ 的矩阵,$M_{i,j}$ 表示顶点 $i$ 到顶点 $j$ 之间的距离,若顶点 $i$ 和 $j$间有边相连,则 $M_{i,j}=M_{j,i}$ 为正整数,否则为 -1。接下来一行包含 n 个整数,从顶点 $1$ 到顶点 $n$ 的偶度。

输出格式

输出一个整数,表示完美匹配树的深度。

样例输入1
4
0 1 -1 2
1 0 3 -1
-1 3 0 4
2 -1 4 0
2 6 2 4
样例输出1
4
说明1

解释如下:

选取深度最大的完美匹配树:

样例输入2
3
0 2 3
2 0 1
3 1 0
2 2 2
样例输出2
说明2

解释如下:

没有完美匹配树。