Submission #1053771

# Submission time Handle Problem Language Result Execution time Memory
1053771 2024-08-11T17:23:35 Z codexistent Pipes (BOI13_pipes) C++14
65 / 100
219 ms 62548 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 100005
#define MAXM 500005
#define FOR(i, a, b) for(ll i = a; i <= b; i++)
#define f first
#define s second

ll n, m, w[MAXN], d[MAXM];
set<ll> adj[MAXN];
pair<ll, pair<ll, ll>> e[MAXN];
bool v[MAXM];
map<pair<ll, ll>, ll> eid;

int main(){
    cin >> n >> m;
    FOR(i, 1, n) cin >> w[i];
    FOR(i, 1, m){
        e[i].f = 0;
        cin >> e[i].s.f >> e[i].s.s;
        adj[e[i].s.f].insert(e[i].s.s), adj[e[i].s.s].insert(e[i].s.f);

        eid.insert({{min(e[i].s.f, e[i].s.s), max(e[i].s.f, e[i].s.s)}, i});
    }

    priority_queue<pair<ll, ll>> pq;
    FOR(i, 1, m) {
        v[i] = false;
        e[i].f = adj[e[i].s.f].size() + adj[e[i].s.s].size() - 2;
        //cout << "FOR EDGE " << i << " WE HAVE " << e[i].f << " CT " << endl;
        for(auto j : adj[e[i].s.f]){
            if(adj[j].size() == 2 && adj[e[i].s.s].find(j) != adj[e[i].s.s].end()){
                e[i].f -= 2;
            }
        }

        if(adj[e[i].s.f].size() == 1 || adj[e[i].s.s].size() == 1){
            pq.push({1, i});
        }else if(e[i].f == 0){
            pq.push({0, i});
        }
    }
    while(pq.size()){
        //cout << pq.top().f << " ~ " << pq.top().s << " ==> " << e[pq.top().s].f << endl;
        auto pqi = pq.top(); pq.pop();
        if(v[pqi.s]) continue;
        v[pqi.s] = true;

        if(pqi.f == 0){
            ll s = 0;
            for(ll i2 : adj[e[pqi.s].s.f]) s += w[i2];
            for(ll i2 : adj[e[pqi.s].s.s]) s += w[i2];

            d[pqi.s] = w[e[pqi.s].s.f] + w[e[pqi.s].s.s] - s;
        }else if(adj[e[pqi.s].s.f].size() == 1){
            d[pqi.s] = w[e[pqi.s].s.f] * 2;
        }else{
            d[pqi.s] = w[e[pqi.s].s.s] * 2;
        }

        adj[e[pqi.s].s.f].erase(e[pqi.s].s.s);
        adj[e[pqi.s].s.s].erase(e[pqi.s].s.f);
        w[e[pqi.s].s.f] -= d[pqi.s] / 2;
        w[e[pqi.s].s.s] -= d[pqi.s] / 2;

        if(adj[e[pqi.s].s.f].size() == 2){
            ll a = *(adj[e[pqi.s].s.f].begin());
            ll b = *(++adj[e[pqi.s].s.f].begin());

            if(eid.find({min(a, b), max(a, b)}) != eid.end()){
                e[eid[{min(a, b), max(a, b)}]].f -= 2;

                if(!v[eid[{min(a, b), max(a, b)}]] && e[eid[{min(a, b), max(a, b)}]].f == 0){
                    pq.push({0, eid[{min(a, b), max(a, b)}]});
                }
            }
        }else if(adj[e[pqi.s].s.f].size() == 1){
            ll a = *(adj[e[pqi.s].s.f].begin());
            if(!v[eid[{min(a, e[pqi.s].s.f), max(a, e[pqi.s].s.f)}]]){
                pq.push({1, eid[{min(a, e[pqi.s].s.f), max(a, e[pqi.s].s.f)}]});
            }
        }

        if(adj[e[pqi.s].s.s].size() == 2){
            ll a = *(adj[e[pqi.s].s.s].begin());
            ll b = *(++adj[e[pqi.s].s.s].begin());

            if(eid.find({min(a, b), max(a, b)}) != eid.end()){
                e[eid[{min(a, b), max(a, b)}]].f -= 2;

                if(!v[eid[{min(a, b), max(a, b)}]] && e[eid[{min(a, b), max(a, b)}]].f == 0){
                    pq.push({0, eid[{min(a, b), max(a, b)}]});
                }
            }
        }else if(adj[e[pqi.s].s.s].size() == 1){
            ll a = *(adj[e[pqi.s].s.s].begin());
            if(!v[eid[{min(a, e[pqi.s].s.s), max(a, e[pqi.s].s.s)}]]){
                pq.push({1, eid[{min(a, e[pqi.s].s.s), max(a, e[pqi.s].s.s)}]});
            }
        }
    }

    FOR(i, 1, m) if(!v[i]){
        cout << 0 << endl;
        return 0;
    } 

    FOR(i, 1, m) cout << d[i] << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 8536 KB Output is correct
2 Correct 1 ms 8540 KB Output is correct
3 Correct 3 ms 8796 KB Output is correct
4 Correct 198 ms 26424 KB Output is correct
5 Correct 1 ms 8536 KB Output is correct
6 Correct 2 ms 8540 KB Output is correct
7 Correct 1 ms 8540 KB Output is correct
8 Correct 1 ms 8540 KB Output is correct
9 Correct 2 ms 8796 KB Output is correct
10 Correct 3 ms 8796 KB Output is correct
11 Correct 2 ms 8796 KB Output is correct
12 Correct 2 ms 8796 KB Output is correct
13 Correct 161 ms 22760 KB Output is correct
14 Correct 177 ms 25292 KB Output is correct
15 Correct 192 ms 26480 KB Output is correct
16 Correct 158 ms 23752 KB Output is correct
17 Correct 219 ms 26344 KB Output is correct
18 Correct 197 ms 26308 KB Output is correct
19 Correct 187 ms 25664 KB Output is correct
20 Correct 1 ms 8536 KB Output is correct
21 Correct 3 ms 8796 KB Output is correct
22 Correct 193 ms 26372 KB Output is correct
23 Correct 151 ms 22732 KB Output is correct
24 Correct 199 ms 26288 KB Output is correct
25 Correct 154 ms 23512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 8540 KB Output isn't correct
2 Incorrect 1 ms 8796 KB Output isn't correct
3 Correct 84 ms 24800 KB Output is correct
4 Correct 79 ms 25444 KB Output is correct
5 Correct 95 ms 25696 KB Output is correct
6 Runtime error 97 ms 59016 KB Execution killed with signal 11
7 Incorrect 1 ms 8548 KB Output isn't correct
8 Incorrect 1 ms 8540 KB Output isn't correct
9 Correct 1 ms 8540 KB Output is correct
10 Correct 1 ms 8540 KB Output is correct
11 Correct 1 ms 8540 KB Output is correct
12 Correct 1 ms 8540 KB Output is correct
13 Correct 1 ms 8540 KB Output is correct
14 Incorrect 1 ms 8540 KB Output isn't correct
15 Incorrect 1 ms 8796 KB Output isn't correct
16 Incorrect 1 ms 8796 KB Output isn't correct
17 Correct 1 ms 8796 KB Output is correct
18 Correct 1 ms 8796 KB Output is correct
19 Correct 1 ms 8796 KB Output is correct
20 Correct 1 ms 8656 KB Output is correct
21 Correct 2 ms 9052 KB Output is correct
22 Incorrect 1 ms 8796 KB Output isn't correct
23 Incorrect 72 ms 22420 KB Output isn't correct
24 Incorrect 92 ms 25552 KB Output isn't correct
25 Correct 87 ms 24724 KB Output is correct
26 Correct 80 ms 25424 KB Output is correct
27 Correct 72 ms 25144 KB Output is correct
28 Runtime error 78 ms 52100 KB Execution killed with signal 11
29 Runtime error 105 ms 62548 KB Execution killed with signal 11
30 Incorrect 107 ms 24912 KB Output isn't correct
31 Incorrect 89 ms 25172 KB Output isn't correct
32 Incorrect 105 ms 26032 KB Output isn't correct
33 Correct 88 ms 25552 KB Output is correct
34 Correct 80 ms 25360 KB Output is correct
35 Correct 76 ms 25428 KB Output is correct
36 Runtime error 75 ms 50768 KB Execution killed with signal 11
37 Runtime error 92 ms 59220 KB Execution killed with signal 11
38 Incorrect 105 ms 25424 KB Output isn't correct
39 Incorrect 110 ms 26064 KB Output isn't correct
40 Incorrect 91 ms 25548 KB Output isn't correct
41 Correct 73 ms 25172 KB Output is correct
42 Correct 68 ms 25168 KB Output is correct
43 Correct 71 ms 25172 KB Output is correct
44 Correct 97 ms 25800 KB Output is correct
45 Runtime error 85 ms 54352 KB Execution killed with signal 11
46 Incorrect 93 ms 25172 KB Output isn't correct
47 Incorrect 90 ms 25552 KB Output isn't correct
48 Incorrect 73 ms 25376 KB Output isn't correct
49 Correct 98 ms 25288 KB Output is correct
50 Correct 86 ms 25728 KB Output is correct
51 Correct 92 ms 25548 KB Output is correct
52 Correct 77 ms 25168 KB Output is correct
53 Runtime error 97 ms 56100 KB Execution killed with signal 11
54 Incorrect 92 ms 25232 KB Output isn't correct