【编程题目 |200分】Directory 删除【2021, 2022 H1 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【Directory 删除】

某文件系统中有 N 个目录,每个目录都一个独一无二的 ID。

每个目录只有一个父目录,但每个父目录下可以有零个或者多个子目录,目录结构呈树状结构。

假设,根目录的 ID 为 0,且根目录没有父目录,其他所有目录的 ID 用唯一的正整数表示,并统一编号。

现给定目录 ID 和其父目录 ID 的对应父子关系表[子目录 ID,父目录 ID],以及一个待删除的目录 ID,请计算并返回一个 ID 序列,表示因为删除指定目录后剩下的所有目录,返回的ID 序列以递增序输出。

注意

1、被删除的目录或文件编号一定在输入的 ID 序列中;

2、当一个目录删除时,它所有的子目录都会被删除。

输入描述

输入的第一行为父子关系表的长度 m;

接下来的 m 行为 m 个父子关系对;

最后一行为待删除的 ID。

序列中的元素以空格分割,参见样例。

输出描述

输出一个序列,表示因为删除指定目录后,剩余的目录 ID。


代码实现


C++解法一


#include<bits/stdc++.h>

using namespace std;

int main(int argc, const char **argv) 
{
    int n;
    int temp;
    int delete_value = 0;
    int delete_index = 0;
    vector<vector<int> > count; 
    cin >> n;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


#include<bits/stdc++.h>

using namespace std;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA


import java.util.*;

public class Directory {

    public static TreeSet<Integer> treeSet = new TreeSet<>();   

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看