免费在线网站,网页上一页下一页代码,太原市住房和城乡建设厅网站,网站建设新技术解题反思#xff1a;
开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤#xff01;看到输入m, n和矩阵#xff0c;注意不能想当然地认为就是高m#xff0c;宽n的矩阵#xff0c;细看含义 比如本题给出了树的邻接矩阵#xff0c;就是n*n的#xff0c;代码实现中没有用到m这… 解题反思
开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤看到输入m, n和矩阵注意不能想当然地认为就是高m宽n的矩阵细看含义 比如本题给出了树的邻接矩阵就是n*n的代码实现中没有用到m这个条件 不熟语法 vectorvectorinttree(m, vectorint(n, 0));
//定义二维m*n数组tree并将每个元素初始化为0
题目见下 题目任意构造一棵树输出以指定的某一结点为根节点的子树。 问题描述 任意构造一棵树输出以指定的某一结点为根节点的子树。下面给出一个样例示意图输入样例的邻接矩阵输出分别以ace结点为根节点的子树。 输入格式 第一行输入图的顶点数n和边数m第二行开始输入树的邻接矩阵结点名称默认为1,2,3,...,n。第n2行输入1,2,3,...,n中选定的某一结点A。 输出格式 选择某一结A点为树根后出现数字以及数字1数字2的形式 数字表示点数字1数字2表示以1、2为顶点的边将各个顶点依照里的关系组合起来即以输入字母为顶点的子树。 样例输入 21 20 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 样例输出 3 (3,7)7 (3,8)8 (8,15)15 (8,16)16 题目分析代码实现
其实就是一个树的深度优先搜索的变形本代码用lambda表达式实现递归函数。
#includebits/stdc.h
using namespace std;int main()
{int n, m;cinnm;vectorvectorinttree(n1, vectorint(n1));//注意从1开始for(int i1; in; i){for(int j1; jn; j){ cintree[i][j];}}int root; cinroot;auto dfs [](auto dfs, int cur) - void{ for(int i1; in; i){if(tree[cur][i] 1){cout(cur,i)i ;dfs(dfs, i);}}return;};coutroot ;dfs(dfs, root);return 0;
}
~希望对你有启发~