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
AC × 2
AC × 12
AC × 21
AC × 29
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