Submission #1053932
Source Code Expand
#include<iostream> #include<vector> #include<algorithm> #include<queue> using namespace std; class UnionFind { private: unsigned size_; std::vector<unsigned> par, rank; public: UnionFind() : size_(0), par(std::vector<unsigned>()), rank(std::vector<unsigned>()) {}; UnionFind(unsigned size__) : size_(size__) { par.resize(size_); rank.resize(size_); for (unsigned i = 0; i < size_; i++) par[i] = i, rank[i] = 0; } unsigned size() { return size_; } unsigned root(unsigned x) { return par[x] == x ? x : par[x] = root(par[x]); } bool same(unsigned x, unsigned y) { return root(x) == root(y); } void unite(unsigned x, unsigned y) { x = root(x), y = root(y); if (x == y) return; if (rank[x] < rank[y]) par[x] = y; else if (rank[x] == rank[y]) par[y] = x, rank[x]++; else par[y] = x; } bool operator==(const UnionFind &u) { return par == u.par; } bool operator!=(const UnionFind &u) { return par != u.par; } }; int n, m, q, a[400000], b[400000], c[400000], dist[5000], D[5000][5000]; vector<pair<int, int>>vec; vector<pair<int, int>>x[5000]; void query(int r1) { fill(dist + 1, dist + n + 1, 1299999999); queue<int>Q; Q.push(r1); dist[r1] = 0; while (!Q.empty()) { int a1 = Q.front(); Q.pop(); for (int i = 0; i < x[a1].size(); i++) { if (dist[x[a1][i].first] == 1299999999) { dist[x[a1][i].first] = max(dist[a1], x[a1][i].second); Q.push(x[a1][i].first); } } } } int main() { cin >> n >> m; for (int i = 0; i < m; i++) { cin >> a[i] >> b[i] >> c[i]; vec.push_back(make_pair(c[i], i)); } sort(vec.begin(), vec.end()); UnionFind UF(n + 1); long long sum = 0; for (int i = 0; i < vec.size(); i++) { int to = vec[i].second; if (UF.same(a[to], b[to]) == false) { UF.unite(a[to], b[to]); sum += c[to]; x[a[to]].push_back(make_pair(b[to], c[to])); x[b[to]].push_back(make_pair(a[to], c[to])); } } for (int i = 1; i <= n; i++) { query(i); for (int j = 1; j <= n; j++)D[i][j] = dist[j]; } cin >> q; for (int i = 0; i < q; i++) { int p1, p2; cin >> p1 >> p2; cout << sum - D[p1][p2] << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | A - Graph |
User | E869120 |
Language | C++14 (GCC 5.4.1) |
Score | 700 |
Code Size | 2140 Byte |
Status | AC |
Exec Time | 1352 ms |
Memory | 87660 KB |
Judge Result
Set Name | Sample | subtask1 | subtask2 | All | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 200 / 200 | 300 / 300 | 200 / 200 | ||||||||
Status |
|
|
|
|
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, 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 | 3 ms | 384 KB |
sample_2.txt | AC | 3 ms | 384 KB |
subtask_1_1.txt | AC | 4 ms | 896 KB |
subtask_1_10.txt | AC | 660 ms | 82544 KB |
subtask_1_11.txt | AC | 3 ms | 384 KB |
subtask_1_2.txt | AC | 493 ms | 79480 KB |
subtask_1_3.txt | AC | 849 ms | 86508 KB |
subtask_1_4.txt | AC | 447 ms | 78720 KB |
subtask_1_5.txt | AC | 461 ms | 78848 KB |
subtask_1_6.txt | AC | 542 ms | 80628 KB |
subtask_1_7.txt | AC | 839 ms | 86508 KB |
subtask_1_8.txt | AC | 444 ms | 78720 KB |
subtask_1_9.txt | AC | 462 ms | 78848 KB |
subtask_2_1.txt | AC | 865 ms | 86508 KB |
subtask_2_2.txt | AC | 856 ms | 86508 KB |
subtask_2_3.txt | AC | 869 ms | 86508 KB |
subtask_2_4.txt | AC | 861 ms | 86508 KB |
subtask_2_5.txt | AC | 461 ms | 78848 KB |
subtask_2_6.txt | AC | 484 ms | 79100 KB |
subtask_2_7.txt | AC | 563 ms | 80628 KB |
subtask_2_8.txt | AC | 857 ms | 86508 KB |
subtask_3_1.txt | AC | 1336 ms | 87660 KB |
subtask_3_2.txt | AC | 1352 ms | 87660 KB |
subtask_3_3.txt | AC | 940 ms | 80128 KB |
subtask_3_4.txt | AC | 948 ms | 80128 KB |
subtask_3_5.txt | AC | 1134 ms | 83824 KB |
subtask_3_6.txt | AC | 1241 ms | 85740 KB |
subtask_3_7.txt | AC | 1337 ms | 87660 KB |
subtask_3_8.txt | AC | 1341 ms | 87660 KB |