UESTC 2016 Summer Training #1 Div.2 J – Objects Panel (A) dfs、按条件遍历树、interesting

ProLightsfx 2017-7-7 164 7/7
J - Objects Panel (A)dfs、按条件遍历树、interesting
Source

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121539#problem/J

My Solution

题目虽然出题不严谨, 但挺有意思的

dfs, 用前向星存储树状结构

然后根据条件遍历, 然后根据要求输出就好了

然后这个题目的数据是有问题的

 The state of

objects that do not have any nested objects will be '-'.

因此叶子必然为 '-', 不可能出现 + 0 这样的数据, 但是test 7好像就是这样的数据, 虽然据说是Codeforces的题, 但确实数据是有问题的

这样导致 先判断是否为 +-再在 '-'的情况下讨论 是否为叶子  WA7

题目中那么必须 先判断是否为叶子然后判断是否为 +-,  这样对于叶子不用管它是否+-了, 因为都是2个space来代替

但事实上根据题意2中判断顺序都是正确的, 如果WA7, 说明是数据问题了,不用担心^_^

此外, 题目的样例输出的是有问题的, ⊙﹏⊙‖∣ 瞪着题目看了1个小时,看不懂,有看了半小时才明白

#include 
#include 
#include 
using namespace std;
typedef long long LL;

char s[108];
vector num[108];

void dfs(int u, int k)
{
    int d = num[u].size(), v;
    for(int i = 0; i < d; i++){
        v = num[u][i];
        for(int j = 0; j < k; j++) printf("  ");
        if(num[v].size()){
            if(s[v] == '-'){printf("- object%dn", v); dfs(v, k+1);}
            else printf("+ object%dn", v);
        }
        else printf("  object%dn", v);
        /*
        if(s[v] == '-'){
            if(num[v].size()) {printf("- object%dn", v); dfs(v, k+1);}
            else printf("  object%dn", v);
        }
        else if(s[v] == '+') printf("+ object%dn", v);
            */

    }
}

int main()
{
    #ifdef LOCAL
    freopen("a.txt", "r", stdin);
    //freopen("b.txt", "w", stdout);
    int T = 1;
    while(T--){
    #endif // LOCAL
    int n, k, val;
    scanf("%d", &n);
    for(int i = 0; i <= n; i++){
        getchar();
        scanf("%c", &s[i]);
        scanf("%d", &k);
        while(k--){
            scanf("%d", &val);
            num[i].push_back(val);
        }
    }

    if(n == 0) {printf("  projectn");}
    else{
        if(s[0] == '-'){
            printf("- projectn");
            dfs(0, 1);
        }
        else printf("+ projectn");
    }




    #ifdef LOCAL
    printf("n");
    }
    #endif // LOCAL
    return 0;
}

 


非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月15日12:45

最后修改:2024年11月15日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论