:heavy_check_mark: test/graph/prim/aoj_grl_2_a.test.cpp

Depends on

Code

// verification-helper: PROBLEM https://onlinejudge.u-aizu.ac.jp/courses/library/5/GRL/2/GRL_2_A

#include "src/graph/prim.hpp"

#include <iostream>

using namespace std;

int main() {
	int v, e;
	cin >> v >> e;
	Prim<int> p(v);
	for (int i = 0; i < e; ++i) {
		int a, b, c;
		cin >> a >> b >> c;
		p.add_edge(a, b, c);
	}
	cout << p.mst_cost() << endl;

	return 0;
}
#line 1 "test/graph/prim/aoj_grl_2_a.test.cpp"
// verification-helper: PROBLEM https://onlinejudge.u-aizu.ac.jp/courses/library/5/GRL/2/GRL_2_A

#line 1 "src/graph/prim.hpp"



#include <functional>
#include <queue>
#include <utility>
#include <vector>

template<class T>
class Prim {
private:
	int n;
	std::vector<std::vector<std::pair<int, T>>> g;

public:
	Prim(int n) : n(n), g(n) {}

	void add_edge(int from, int to, T cost) {
		g[from].emplace_back(to, cost);
		g[to].emplace_back(from, cost);
	}

	T mst_cost() {
		T cost = 0;
		std::vector<bool> used(g.size());
		std::priority_queue<std::pair<T, int>,
							std::vector<std::pair<T, int>>,
							std::greater<>>
			pq;
		pq.emplace(0, 0);
		while (!pq.empty()) {
			auto [now_cost, now_v] = pq.top();
			pq.pop();
			if (used[now_v]) continue;
			used[now_v] = true;
			cost += now_cost;
			for (auto [nv, nw] : g[now_v]) pq.emplace(nw, nv);
		}
		return cost;
	}
};


#line 4 "test/graph/prim/aoj_grl_2_a.test.cpp"

#include <iostream>

using namespace std;

int main() {
	int v, e;
	cin >> v >> e;
	Prim<int> p(v);
	for (int i = 0; i < e; ++i) {
		int a, b, c;
		cin >> a >> b >> c;
		p.add_edge(a, b, c);
	}
	cout << p.mst_cost() << endl;

	return 0;
}

Test cases

Env Name Status Elapsed Memory
g++ 00_sample1.in :heavy_check_mark: AC 12 ms 18 MB
g++ 00_sample2.in :heavy_check_mark: AC 12 ms 18 MB
g++ critical1.in :heavy_check_mark: AC 12 ms 16 MB
g++ critical2.in :heavy_check_mark: AC 30 ms 20 MB
g++ critical3.in :heavy_check_mark: AC 200 ms 25 MB
g++ out1.in :heavy_check_mark: AC 13 ms 18 MB
g++ out10.in :heavy_check_mark: AC 243 ms 32 MB
g++ out11.in :heavy_check_mark: AC 78 ms 22 MB
g++ out12.in :heavy_check_mark: AC 124 ms 25 MB
g++ out13.in :heavy_check_mark: AC 99 ms 24 MB
g++ out14.in :heavy_check_mark: AC 121 ms 24 MB
g++ out15.in :heavy_check_mark: AC 92 ms 23 MB
g++ out2.in :heavy_check_mark: AC 13 ms 18 MB
g++ out3.in :heavy_check_mark: AC 12 ms 18 MB
g++ out4.in :heavy_check_mark: AC 12 ms 18 MB
g++ out5.in :heavy_check_mark: AC 13 ms 18 MB
g++ out6.in :heavy_check_mark: AC 243 ms 32 MB
g++ out7.in :heavy_check_mark: AC 245 ms 32 MB
g++ out8.in :heavy_check_mark: AC 243 ms 32 MB
g++ out9.in :heavy_check_mark: AC 244 ms 32 MB
clang++ 00_sample1.in :heavy_check_mark: AC 12 ms 14 MB
clang++ 00_sample2.in :heavy_check_mark: AC 12 ms 16 MB
clang++ critical1.in :heavy_check_mark: AC 11 ms 14 MB
clang++ critical2.in :heavy_check_mark: AC 23 ms 15 MB
clang++ critical3.in :heavy_check_mark: AC 119 ms 21 MB
clang++ out1.in :heavy_check_mark: AC 13 ms 16 MB
clang++ out10.in :heavy_check_mark: AC 148 ms 27 MB
clang++ out11.in :heavy_check_mark: AC 51 ms 16 MB
clang++ out12.in :heavy_check_mark: AC 77 ms 18 MB
clang++ out13.in :heavy_check_mark: AC 63 ms 17 MB
clang++ out14.in :heavy_check_mark: AC 75 ms 18 MB
clang++ out15.in :heavy_check_mark: AC 59 ms 16 MB
clang++ out2.in :heavy_check_mark: AC 13 ms 14 MB
clang++ out3.in :heavy_check_mark: AC 12 ms 14 MB
clang++ out4.in :heavy_check_mark: AC 12 ms 14 MB
clang++ out5.in :heavy_check_mark: AC 12 ms 14 MB
clang++ out6.in :heavy_check_mark: AC 150 ms 27 MB
clang++ out7.in :heavy_check_mark: AC 148 ms 25 MB
clang++ out8.in :heavy_check_mark: AC 150 ms 25 MB
clang++ out9.in :heavy_check_mark: AC 150 ms 29 MB
Back to top page