Submission #83256

# Submission time Handle Problem Language Result Execution time Memory
83256 2018-11-06T12:18:47 Z teomrn Pipes (BOI13_pipes) C++14
31.2963 / 100
486 ms 132096 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long i64;
const int NMAX = 100010;

vector <pair <int, int>> adia[NMAX + 10];
int tata[NMAX + 10];
int taken[NMAX + 10];
int h[NMAX + 10];
bool ok = 1;
i64 ce_s_vrea[NMAX + 10];
int ans[5 * NMAX + 10];

vector <vector <int>> centers;

bool dfs(int nod, bool did)
{
    for (auto i : adia[nod]) {
        if (i.first == tata[nod])
            continue;
        if (tata[i.first]) {
            if (h[i.first] > h[nod])
                continue;
            if (did) {
                ok = 0;
                return 1;
            }
            vector <int> c;
            for (int j = nod; j != tata[i.first]; j = tata[j]) {
                if (taken[j]) {
                    ok = 0;
                    return 1;
                }
                taken[j] = 1;
                c.push_back(j);
            }
            centers.push_back(c);
            did = 1;
        }
        else {
            tata[i.first] = nod;
            h[i.first] = 1 + h[nod];
            did |= dfs(i.first, did);
            if (!ok)
                return 1;
        }
    }
    return did;
}

int solve_arb(int nod, int tata)
{
    int ce_tata;
    for (auto i : adia[nod]) {
        if (i.first != tata) {
            ans[i.second] = solve_arb(i.first, nod);
            ce_s_vrea[nod] -= ans[i.second];
        }
    }
    return ce_s_vrea[nod];
}

void solve_ciclu(vector <int> ciclu)
{
    vector <int> a(ciclu.size());
    vector <i64> s_st(ciclu.size()), s_dr(ciclu.size());

    int n = ciclu.size();

    if (n % 2 == 0) {
        ok = 0;
        return;
    }

    for (int i = 0; i < n; i++) {
        for (auto j : adia[ciclu[i]]) {
            if (j.first != ciclu[(i + 1) % n] && j.first != ciclu[(i + n - 1) % n]) {
                int x = solve_arb(j.first, ciclu[i]);
                ce_s_vrea[ciclu[i]] -= x;
                ans[j.second] = x;
            }
            else if (j.first == ciclu[(i + n - 1) % n])
                a[i] = j.second;
        }
    }
    i64 s_total = 0;
    for (auto i : ciclu)
        s_total += ce_s_vrea[i];

    if ((s_total & 1LL) || (s_total && n == 1)) {
        ok = 0;
        return;
    }

    s_st[0] = ce_s_vrea[ciclu[0]];
    for (int i = 1; i < n; i++)
        s_st[i] = ce_s_vrea[ciclu[i]] - s_st[i - 1];
    s_dr[n - 1] = ce_s_vrea[ciclu[n - 1]];
    for (int i = n - 2; i >= 0; i--)
        s_dr[i] = ce_s_vrea[ciclu[i]] - s_dr[i + 1];

    for (int i = 0; i < n; i++)
        ans[a[i]] = (s_st[i] + s_dr[i] - ce_s_vrea[ciclu[i]]) / 2;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, m, a, b;

    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> ce_s_vrea[i];

    for (int i = 1; i <= m; i++) {
        cin >> a >> b;
        adia[a].push_back({ b, i });
        adia[b].push_back({ a, i });
    }

    for (int i = 1; i <= n; i++) {
        if (!tata[i]) {
            tata[i] = -1;
            auto x = dfs(i, 0);
            if (!x)
            centers.push_back({ i });
        }
    }

    for (auto i : centers)
        solve_ciclu(i);



    if (!ok) {
        cout << 0 << '\n';
        return 0;
    }

    for (int i = 1; i <= m; i++)
        cout << 2LL * ans[i] << '\n';

    return 0;
}

Compilation message

pipes.cpp: In function 'int solve_arb(int, int)':
pipes.cpp:54:9: warning: unused variable 'ce_tata' [-Wunused-variable]
     int ce_tata;
         ^~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 2808 KB Output is correct
2 Correct 4 ms 2916 KB Output is correct
3 Correct 5 ms 2980 KB Output is correct
4 Correct 92 ms 10612 KB Output is correct
5 Correct 4 ms 10612 KB Output is correct
6 Correct 4 ms 10612 KB Output is correct
7 Correct 4 ms 10612 KB Output is correct
8 Correct 5 ms 10612 KB Output is correct
9 Correct 6 ms 10612 KB Output is correct
10 Correct 5 ms 10612 KB Output is correct
11 Correct 5 ms 10612 KB Output is correct
12 Correct 5 ms 10612 KB Output is correct
13 Correct 57 ms 10880 KB Output is correct
14 Correct 82 ms 13300 KB Output is correct
15 Correct 72 ms 15144 KB Output is correct
16 Correct 63 ms 15588 KB Output is correct
17 Correct 72 ms 18100 KB Output is correct
18 Correct 75 ms 19636 KB Output is correct
19 Correct 107 ms 27628 KB Output is correct
20 Correct 4 ms 27628 KB Output is correct
21 Correct 4 ms 27628 KB Output is correct
22 Correct 77 ms 27628 KB Output is correct
23 Correct 67 ms 27628 KB Output is correct
24 Correct 91 ms 27628 KB Output is correct
25 Correct 101 ms 27628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 27628 KB Output isn't correct
2 Incorrect 5 ms 27628 KB Output isn't correct
3 Correct 83 ms 35220 KB Output is correct
4 Runtime error 370 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Runtime error 231 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Runtime error 445 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
7 Runtime error 4 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
8 Runtime error 4 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
9 Runtime error 4 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
10 Runtime error 137 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
11 Runtime error 129 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
12 Runtime error 125 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
13 Runtime error 126 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
14 Runtime error 4 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
15 Runtime error 5 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
16 Runtime error 5 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
17 Runtime error 5 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
18 Runtime error 154 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
19 Runtime error 145 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
20 Runtime error 127 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
21 Runtime error 130 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
22 Runtime error 5 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
23 Runtime error 81 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
24 Runtime error 109 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
25 Runtime error 82 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
26 Runtime error 330 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
27 Runtime error 352 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
28 Runtime error 190 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
29 Runtime error 379 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
30 Runtime error 105 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
31 Runtime error 118 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
32 Runtime error 90 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
33 Runtime error 76 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
34 Runtime error 308 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
35 Runtime error 368 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
36 Runtime error 208 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
37 Runtime error 398 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
38 Runtime error 109 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
39 Runtime error 79 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
40 Runtime error 126 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
41 Runtime error 149 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
42 Runtime error 440 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
43 Runtime error 287 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
44 Runtime error 207 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
45 Runtime error 294 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
46 Runtime error 112 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
47 Runtime error 117 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
48 Runtime error 105 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
49 Runtime error 75 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
50 Runtime error 486 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
51 Runtime error 392 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
52 Runtime error 311 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
53 Runtime error 303 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
54 Runtime error 98 ms 132096 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.