UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#212832#3829. CtommyCompile Error//C++1.2kb2024-10-20 11:57:562024-10-20 12:47:01

answer

#include <bits/stdc++.h>

using namespace std;
int n;
const int N = 1e6 + 10;
vector<int> a[N];
int dep[N], vis[N];
struct Node {
    int root, siz;
};
vector<Node> so[N];
int siz[N];
bool cmp(Node x, Node y) {
    return x.siz > y.siz;
}
void dfs1(int x) {
    vis[x] = 1;
    for(int v : a[x]) {
        if(vis[x]) continue;
        dep[v] = dep[x] + 1;
        dfs1(v);
        siz[x] += siz[v] + 1;
    }
}
int f[N];
void dfs2(int x) {
    vis[x] = 1;
    int all = 0;
    for(int v : a[x]) {
        if(vis[v]) continue;
        dfs2(v);
        so[x].push_back({v, f[v]});
        all += f[v] + 1;
    }
    if(so[x].size() == 0) f[x] = dep[x];
    else {
        sort(so[x].begin(), so[x].end(), cmp);
        int minn = 0x7fffffff;
        int left = 0;
        for(int i = 1; i < so[x].size(); i++) {
            left += so[x][i].siz;
            minn = min(minn, 2 * (all - left) + left + i * dep[x]);
        }
        f[x] = minn;
    }
} 
int main() {
    scanf("%d", &n);
    for(int i = 1; i < n; i++) {
        int u, v;
        scanf("%d%d", &u, &v);
        a[u].push_back(v);
        a[v].push_back(u);
    }
    dfs1(1);
    memset(vis, 0, sizeof(vis));
    dfs2(1);
    printf("%d\n", f[1]);
}  

Details

answer.code: In function 'void dfs1(int)':
answer.code:18:17: error: range-based 'for' loops are not allowed in C++98 mode
     for(int v : a[x]) {\x0d
                 ^
answer.code: In function 'void dfs2(int)':
answer.code:29:17: error: range-based 'for' loops are not allowed in C++98 mode
     for(int v : a[x]) {\x0d
                 ^
answer.code:32:24: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
         so[x].push_back({v, f[v]});\x0d
   ...