Submission #3964152


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const int MAXN = 4005;
const int MAXM = 400005;

struct Edge {
    int u, v, w;

    bool inline operator < (const Edge &rhs) const {
        return w < rhs.w;
    }
};

class DSU {
private:
    vector<int> pset;

public:
    DSU(int n) {
        pset.resize(n);
        for(int i = 0; i < n; ++i)
            pset[i] = i;
    }

    int findSet(int i) {
        return (pset[i] == i) ? i : (pset[i] = findSet(pset[i]));
    }

    bool unionSet(int i, int j) {
        int p = findSet(i), q = findSet(j);
        if (p == q)
            return false;

        pset[p] = q;
        return true;
    }
};

int n, m, q, maxW[MAXN][MAXN], root;
Edge e[MAXM];
vector<int> g[MAXN];

void DFS(int u, int par) {
    for(int i: g[u]) {
        int v = e[i].u + e[i].v - u;
        if (v == par)
            continue;

        maxW[root][v] = max(maxW[root][u], e[i].w);
        DFS(v, u);
    }
}

int main () {
    scanf("%d%d", &n, &m);
    for(int i = 0; i < m; ++i) {
        scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);
        --e[i].u;
        --e[i].v;
    }

    sort(e, e+m);
    DSU s(n);

    ll mstWeight = 0;
    for(int i = 0; i < m; ++i) {
        int u = e[i].u, v = e[i].v;
        if (s.unionSet(u, v)) {
            g[u].push_back(i);
            g[v].push_back(i);
            mstWeight += e[i].w;
        }
    }

    for(int u = 0; u < n; ++u) {
        root = u;
        DFS(u, -1);
    }

    scanf("%d", &q);
    for(int i = 0; i < q; ++i) {
        int u, v;
        scanf("%d%d", &u, &v);
        --u; --v;

        ll ans = mstWeight - maxW[u][v];
        printf("%lld\n", ans);
    }

    return 0;
}

Submission Info

Submission Time
Task A - Graph
User xuanquang1999
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1817 Byte
Status AC
Exec Time 675 ms
Memory 68864 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:60:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
                          ^
./Main.cpp:62:51: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);
                                                   ^
./Main.cpp:85:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &q);
                    ^
./Main.cpp:88:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &u, &v);
                              ^

Judge Result

Set Name Sample subtask1 subtask2 All
Score / Max Score 0 / 0 200 / 200 300 / 300 200 / 200
Status
AC × 2
AC × 12
AC × 21
AC × 31
Set Name Test Cases
Sample sample_1.txt, sample_2.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt
All sample_1.txt, sample_2.txt, sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt
Case Name Status Exec Time Memory
sample_1.txt AC 2 ms 2432 KB
sample_2.txt AC 2 ms 2432 KB
subtask_1_1.txt AC 2 ms 4480 KB
subtask_1_10.txt AC 579 ms 67712 KB
subtask_1_11.txt AC 2 ms 2432 KB
subtask_1_2.txt AC 521 ms 64256 KB
subtask_1_3.txt AC 640 ms 67712 KB
subtask_1_4.txt AC 441 ms 63744 KB
subtask_1_5.txt AC 492 ms 63872 KB
subtask_1_6.txt AC 540 ms 64896 KB
subtask_1_7.txt AC 635 ms 67712 KB
subtask_1_8.txt AC 432 ms 63872 KB
subtask_1_9.txt AC 510 ms 63872 KB
subtask_2_1.txt AC 635 ms 67840 KB
subtask_2_2.txt AC 631 ms 67840 KB
subtask_2_3.txt AC 636 ms 67840 KB
subtask_2_4.txt AC 639 ms 67840 KB
subtask_2_5.txt AC 428 ms 63872 KB
subtask_2_6.txt AC 519 ms 64000 KB
subtask_2_7.txt AC 538 ms 65024 KB
subtask_2_8.txt AC 635 ms 67840 KB
subtask_3_1.txt AC 675 ms 68864 KB
subtask_3_2.txt AC 673 ms 68864 KB
subtask_3_3.txt AC 466 ms 65152 KB
subtask_3_4.txt AC 554 ms 65152 KB
subtask_3_5.txt AC 604 ms 68864 KB
subtask_3_6.txt AC 641 ms 68864 KB
subtask_3_7.txt AC 666 ms 68864 KB
subtask_3_8.txt AC 666 ms 68864 KB