Beispiel #1
0
int main()
{
    FILE *in  = fopen (PROBLEM_NAME".in","r");
    FILE *out = fopen (PROBLEM_NAME".out","w");

    int k;
    fscanf(in, "%d %d ", &n, &k);
    for (int i = 0; i < n; ++i) {
        used.push_back(false);
        tin.push_back(0);
        fup.push_back(0);
        vi l;
        g.push_back(l);
    }
    for (int i = 0; i < k; ++i) {
        int x, y;
        fscanf(in, "%d %d ", &x, &y);
        g[x-1].push_back(y-1);
        g[y-1].push_back(x-1);
    }

    timer = 0;
    dfs(0);

    sort(ans.begin(), ans.end());
    ans.erase( unique( ans.begin(), ans.end() ), ans.end() );
    fprintf(out, "%d\n", (int)ans.size());
    for (size_t i = 0; i < ans.size(); ++i) {
        fprintf(out, "%d\n", ans[i]+1);
    }

    fclose(in);
    fclose(out);
    return 0;
}
Beispiel #2
0
int main()
{
    FILE *in  = fopen (PROBLEM_NAME".in","r");
    FILE *out = fopen (PROBLEM_NAME".out","w");

    fscanf(in, "%d", &n);
    for (int i = 0; i < n; ++i) {
        tin.push_back(0);
        tout.push_back(0);
        used.push_back(false);
        vi l;
        g.push_back(l);
    }

    for (int i = 0; i < n; ++i) {
        int p;
        fscanf(in, "%d", &p);
        if (p == 0) {
            root = i;
        } else {
            g[p-1].push_back(i);
        }
    }

    timer = 0;
    dfs(root);

//    print();

    int k;
    fscanf(in, "%d", &k);
    for (int i = 0; i < k; ++i) {
        int a, b;
        fscanf(in, "%d %d", &a, &b);
        int res = (upper(a-1, b-1)) ? 1 : 0;
        fprintf(out, "%d\n", res);
    }

    fclose(in);
    fclose(out);
    return 0;
}