/ tabris /

记录详情

Runtime Error


  
# 状态 耗时 内存占用
#1 Accepted 10ms 3.211 MiB
#2 Wrong Answer 21ms 4.25 MiB
#3 Wrong Answer 16ms 4.375 MiB
#4 Wrong Answer 18ms 3.887 MiB
#5 Accepted 214ms 4.594 MiB
#6 Runtime Error 166ms 12.746 MiB
#7 Runtime Error 133ms 12.5 MiB
#8 Runtime Error 144ms 12.625 MiB

代码

#include <bits/stdc++.h>
#define  ms(a,b) memset(a,b,sizeof(a))

using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=5e5+5;

int ls[maxn],rs[maxn];
int ans=0,n,rt,cnt;
bool changed[maxn];
int dfs(int u){
    int lmin=(ls[u])?dfs(ls[u]):u;
    int rmin=(rs[u])?dfs(rs[u]):u;
    if(lmin>rmin) changed[u]=true,ans++;
    return min(lmin,rmin);
}
void Output(int u){
    if(!u) return;
    ++cnt;
    if(changed[u]){
        Output(rs[u]);
        if(cnt < n) printf("%d ",u);
        else        printf("%d\n",u);
        Output(ls[u]);
    }
    else {
        Output(ls[u]);
        if(cnt < n) printf("%d ",u);
        else        printf("%d\n",u);
        Output(rs[u]);
    }
}
int main(){
    while(~scanf("%d%d",&n,&rt)){
        cnt = 0;
        for(int i=1;i<=n;i++)
            scanf("%d%d",&ls[i],&rs[i]);
        ms(changed,0);
        dfs(rt);
        printf("%d\n",ans);
        Output(rt);
    }
    return 0;
}

信息

递交者
类型
递交
题目
tabris is SirBat 1 (**数据范围有改动**) 在这个oj后三组数据会栈溢出 最好手工栈
语言
C++
递交时间
2017-12-09 16:31:27
评测时间
2017-12-09 16:31:27
评测机
分数
256
总耗时
727ms
峰值内存
12.746 MiB