当前位置: 首页 > news >正文

洛谷 U273725:树的叶子节点

【题目来源】
https://www.luogu.com.cn/problem/U273725

【题目描述】
已知一棵树,有 n 个结点,
编号 1 至 N,其中 1 号是根。求树的叶子节点数。

【输入格式】
第一行一个数 N (
1<=N<=1000)
接下来 N 行,每行 N 个 1 或 0,第 i 第 j 列是 1,表示 i, j 两点有边,否是没有边。

【输出格式】
树的叶子节点数及它们的编号。

【输入样例】
10
0 1 1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0
1 0 0 0 1 1 0 0 0 1
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0 0 0
0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0​​​​​​​

【输出样例】
5
4 5 8 9 10​​​​​​​

【算法分析】
● 判断是否为叶子结点的核心代码如下所示。

if(i==1 && cnt==0) v.push_back(i);
else if(i!=1 && cnt==1) v.push_back(i);

● 例如,给定如下所示样例。

4
0 1 1 0
1 0 0 0
1 0 0 1
0 0 1 0

输出结果为:

2
2 4


【算法代码】

#include <bits/stdc++.h>
using namespace std;

const int maxn=1e3+5;
int a[maxn][maxn];

int main() {
    int n;
    cin>>n;
    for(int i=0; i<n; i++) {
        for(int j=0; j<n; j++) {
            cin>>a[i][j];
        }
    }

    vector<int> v;

    for(int i=1; i<=n; i++) {
        int row=i-1;
        int cnt=0;
        for(int j=0; j<n; j++) {
            if(a[row][j]==1) cnt++;
        }

        if(i==1 && cnt==0) v.push_back(i);
        else if(i!=1 && cnt==1) v.push_back(i);
    }

    sort(v.begin(),v.end());

    cout<<v.size()<<endl;
    for(auto i=0; i<v.size(); i++) {
        cout<<v[i]<<" ";
    }
    cout<<endl;

    return 0;
}



/*
in:
10
0 1 1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0
1 0 0 0 1 1 0 0 0 1
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0 0 0
0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0

out:
5
4 5 8 9 10
*/




【参考文献】
https://www.luogu.com.cn/article/2h6t1unq
https://blog.csdn.net/qq_38499859/article/details/78857873
https://blog.csdn.net/weixin_46247544/article/details/106534263
https://www.luogu.com.cn/problem/P11962
https://www.acwing.com/problem/content/4949/



 

相关文章:

  • 眨眼睛查看密码工具类
  • Java Web从入门到精通:全面探索与实战(二)
  • 虚拟机上安装openEuler和openGauss数据库
  • 移动端六大语言速记:第9部分 - 并发与多线程
  • 自动驾驶---苹果又要造车了吗?
  • 【多模态mllm之audio encoder】openai whisper模型解析
  • 2025最新系统 Git 教程(三)
  • 【Project】高并发内存池
  • Qt 入门 4 之标准对话框
  • MySQL高可用性
  • WordPress超简洁的主题:果果CMS主题
  • LeetCode 3396.使数组元素互不相同所需的最少操作次数:O(n)一次倒序遍历
  • GEO, TCGA 等将被禁用?!这40个公开数据库可能要小心使用了
  • 250408_解决加载大量数据集速度过慢,耗时过长的问题
  • 在 macOS 上连接 PostgreSQL 数据库(pgAdmin、DBeaver)
  • 第十四届蓝桥杯大赛软件赛国赛C/C++研究生组
  • SVT-AV1学习-函数selfguided_restoration_fast_internal
  • 机器学习课堂7用scikit-learn库训练SVM模型
  • duckdb源码阅读学习路径图
  • 题目练习之map的奇妙使用
  • 微软将裁员3%,减少管理层
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • 75万买299元路由器后续:重庆市纪委、财政局、教委联合调查
  • 脑血管支架:救命神器还是定时炸弹?听听医生的大实话
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研