Submission #83269

# Submission time Handle Problem Language Result Execution time Memory
83269 2018-11-06T13:02:21 Z teomrn Pipes (BOI13_pipes) C++14
44.0741 / 100
6 ms 3052 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 activ[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)
{
    activ[nod] = 1;
    for (auto i : adia[nod]) {
        if (i.first == tata[nod])
            continue;
        if (tata[i.first] != 0) {
            if (h[i.first] > h[nod])
                continue;
            assert(activ[i.first]);
            if (did) {
                ok = 0;
                return 1;
            }
            vector <int> c;
            for (int j = nod; j != tata[i.first]; j = tata[j]) {
                if (j == -1)
                    while (1);
                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;
        }
    }
    activ[nod] = 0;
    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()
{
    cout << 0;
    return 0;
    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 });
        }
    }

    return 0;

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

    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:60:9: warning: unused variable 'ce_tata' [-Wunused-variable]
     int ce_tata;
         ^~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 2680 KB Output isn't correct
2 Incorrect 4 ms 2712 KB Output isn't correct
3 Incorrect 5 ms 2760 KB Output isn't correct
4 Incorrect 4 ms 2924 KB Output isn't correct
5 Incorrect 4 ms 2924 KB Output isn't correct
6 Incorrect 4 ms 2924 KB Output isn't correct
7 Incorrect 4 ms 2924 KB Output isn't correct
8 Incorrect 4 ms 2924 KB Output isn't correct
9 Incorrect 4 ms 2924 KB Output isn't correct
10 Incorrect 4 ms 2924 KB Output isn't correct
11 Incorrect 4 ms 2924 KB Output isn't correct
12 Incorrect 4 ms 2924 KB Output isn't correct
13 Incorrect 4 ms 2924 KB Output isn't correct
14 Incorrect 4 ms 2924 KB Output isn't correct
15 Incorrect 4 ms 2924 KB Output isn't correct
16 Incorrect 4 ms 2924 KB Output isn't correct
17 Incorrect 4 ms 2924 KB Output isn't correct
18 Incorrect 4 ms 2924 KB Output isn't correct
19 Incorrect 4 ms 2924 KB Output isn't correct
20 Incorrect 4 ms 2924 KB Output isn't correct
21 Incorrect 5 ms 2924 KB Output isn't correct
22 Incorrect 4 ms 2924 KB Output isn't correct
23 Incorrect 4 ms 2924 KB Output isn't correct
24 Incorrect 4 ms 2924 KB Output isn't correct
25 Incorrect 4 ms 2924 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 2924 KB Output isn't correct
2 Incorrect 4 ms 2924 KB Output isn't correct
3 Correct 4 ms 2924 KB Output is correct
4 Correct 5 ms 2924 KB Output is correct
5 Correct 4 ms 2924 KB Output is correct
6 Correct 4 ms 3052 KB Output is correct
7 Incorrect 4 ms 3052 KB Output isn't correct
8 Incorrect 4 ms 3052 KB Output isn't correct
9 Correct 4 ms 3052 KB Output is correct
10 Correct 4 ms 3052 KB Output is correct
11 Correct 4 ms 3052 KB Output is correct
12 Correct 4 ms 3052 KB Output is correct
13 Correct 4 ms 3052 KB Output is correct
14 Incorrect 4 ms 3052 KB Output isn't correct
15 Incorrect 4 ms 3052 KB Output isn't correct
16 Incorrect 4 ms 3052 KB Output isn't correct
17 Correct 6 ms 3052 KB Output is correct
18 Correct 4 ms 3052 KB Output is correct
19 Correct 4 ms 3052 KB Output is correct
20 Correct 4 ms 3052 KB Output is correct
21 Correct 4 ms 3052 KB Output is correct
22 Incorrect 4 ms 3052 KB Output isn't correct
23 Incorrect 4 ms 3052 KB Output isn't correct
24 Incorrect 4 ms 3052 KB Output isn't correct
25 Correct 4 ms 3052 KB Output is correct
26 Correct 4 ms 3052 KB Output is correct
27 Correct 5 ms 3052 KB Output is correct
28 Correct 4 ms 3052 KB Output is correct
29 Correct 4 ms 3052 KB Output is correct
30 Incorrect 5 ms 3052 KB Output isn't correct
31 Incorrect 5 ms 3052 KB Output isn't correct
32 Incorrect 4 ms 3052 KB Output isn't correct
33 Correct 4 ms 3052 KB Output is correct
34 Correct 4 ms 3052 KB Output is correct
35 Correct 4 ms 3052 KB Output is correct
36 Correct 4 ms 3052 KB Output is correct
37 Correct 4 ms 3052 KB Output is correct
38 Incorrect 4 ms 3052 KB Output isn't correct
39 Incorrect 4 ms 3052 KB Output isn't correct
40 Incorrect 4 ms 3052 KB Output isn't correct
41 Correct 4 ms 3052 KB Output is correct
42 Correct 4 ms 3052 KB Output is correct
43 Correct 4 ms 3052 KB Output is correct
44 Correct 4 ms 3052 KB Output is correct
45 Correct 4 ms 3052 KB Output is correct
46 Incorrect 4 ms 3052 KB Output isn't correct
47 Incorrect 4 ms 3052 KB Output isn't correct
48 Incorrect 4 ms 3052 KB Output isn't correct
49 Correct 4 ms 3052 KB Output is correct
50 Correct 4 ms 3052 KB Output is correct
51 Correct 4 ms 3052 KB Output is correct
52 Correct 4 ms 3052 KB Output is correct
53 Correct 4 ms 3052 KB Output is correct
54 Incorrect 4 ms 3052 KB Output isn't correct