1. 第一次使用邻接矩阵,由于题目中的节点数为N,但是边数为N-1,所以矩阵稀疏,使得测试时测试点3内存超限 23分/25分
代码记录如下:
//这里是一个稀疏矩阵
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int n;
vector<vector<int>> vec;
//vector<bool> flag;
bool flag[10001];
vector<int> res;
//vector<int> deep;
int deep[10001];
void dfs(int nodeId) {
if(!flag[nodeId]){
flag[nodeId]= true;
for (int i = 1; i <= n; i++) {
if (vec[nodeId][i]==1&&(!flag[i]))
dfs(i);
}
}
}
//去计算以a为root的树的层高,层级遍历(广度优先)
int calDeep(int a) {
//deep.clear();
//deep.resize(n + 1);
//初始化深度为-1
for (int i = 1; i <= n; i++)
deep[i] = -1;
deep[a] = 1;
queue<int> q;
q.push(a);
while (!q.empty()) {
int temp = q.front();
for (int i = 1; i <= n; i++) {
if (vec[temp][i]