Submission #2245237
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
template <class T>
struct Kruskal {
struct UnionFind {
int N;
vector<int> sz_tree, parent;
UnionFind() {}
UnionFind(int N) : N(N), sz_tree(N, 1), parent(N) {
iota(parent.begin(), parent.end(), 0);
}
int root(int x) {
return parent[x] == x ? x : parent[x] = root(parent[x]);
}
void merge(int x, int y) {
if ((x = root(x)) == (y = root(y))) return;
if (sz_tree[x] < sz_tree[y]) swap(x, y);
sz_tree[x] += sz_tree[y];
parent[y] = x;
}
bool same(int x, int y) {
return root(x) == root(y);
}
int size(int x) {
return sz_tree[root(x)];
}
};
struct edge {
int from, to; T cost;
edge() {}
edge(int f, int t, T c) : from(f), to(t), cost(c) {}
};
int N;
vector<edge> es;
Kruskal() {}
Kruskal(int N) : N(N) {}
void add_edge(int from, int to, T cost) {
es.emplace_back(from, to, cost);
}
T mst() {
T res = 0;
UnionFind uf(N);
sort(es.begin(), es.end(), [&](edge a, edge b) {
return a.cost < b.cost;
});
for (auto &e : es) {
if (uf.same(e.from, e.to)) continue;
uf.merge(e.from, e.to);
res += e.cost;
}
return res;
}
};
int dy[] = {-1, 0, 0, 1};
int dx[] = {0, -1, 1, 0};
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
cout << fixed << setprecision(10);
int H, W;
cin >> H >> W;
pii S, G;
cin >> S.first >> S.second;
cin >> G.first >> G.second;
S.first--, S.second--;
G.first--, G.second--;
int P[110][110];
int sum = 0;
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cin >> P[i][j];
sum += P[i][j];
}
}
Kruskal<int> K(H * W);
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
for (int k = 0; k < 4; k++) {
int ni = i + dy[k], nj = j + dx[k];
if (ni >= 0 && ni < H && nj >= 0 && nj < W) {
K.add_edge(i * W + j, ni * W + nj, -P[i][j] * P[ni][nj]);
K.add_edge(ni * W + nj, i * W + j, -P[i][j] * P[ni][nj]);
}
}
}
}
cout << sum - K.mst() << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Game on a Grid |
User |
legosuke |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2302 Byte |
Status |
AC |
Exec Time |
8 ms |
Memory |
2040 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt |
All |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
1 ms |
256 KB |
subtask0_sample_02.txt |
AC |
1 ms |
256 KB |
subtask0_sample_03.txt |
AC |
1 ms |
256 KB |
subtask1_01.txt |
AC |
1 ms |
256 KB |
subtask1_02.txt |
AC |
1 ms |
256 KB |
subtask1_03.txt |
AC |
1 ms |
256 KB |
subtask1_04.txt |
AC |
1 ms |
256 KB |
subtask1_05.txt |
AC |
1 ms |
256 KB |
subtask1_06.txt |
AC |
1 ms |
256 KB |
subtask1_07.txt |
AC |
8 ms |
2040 KB |
subtask1_08.txt |
AC |
7 ms |
2040 KB |
subtask1_09.txt |
AC |
7 ms |
1912 KB |
subtask1_10.txt |
AC |
8 ms |
2040 KB |
subtask1_11.txt |
AC |
8 ms |
2040 KB |
subtask1_12.txt |
AC |
7 ms |
2040 KB |
subtask1_13.txt |
AC |
7 ms |
1912 KB |
subtask1_14.txt |
AC |
8 ms |
1912 KB |
subtask1_15.txt |
AC |
7 ms |
1912 KB |
subtask1_16.txt |
AC |
5 ms |
2040 KB |
subtask1_17.txt |
AC |
1 ms |
384 KB |
subtask1_18.txt |
AC |
1 ms |
256 KB |
subtask1_19.txt |
AC |
1 ms |
384 KB |
subtask1_20.txt |
AC |
5 ms |
2040 KB |
subtask1_21.txt |
AC |
6 ms |
1912 KB |
subtask1_22.txt |
AC |
6 ms |
2040 KB |
subtask1_23.txt |
AC |
6 ms |
1912 KB |
subtask1_24.txt |
AC |
1 ms |
256 KB |
subtask1_25.txt |
AC |
1 ms |
256 KB |
subtask1_26.txt |
AC |
1 ms |
256 KB |
subtask1_27.txt |
AC |
1 ms |
256 KB |
subtask1_28.txt |
AC |
1 ms |
256 KB |
subtask1_29.txt |
AC |
1 ms |
256 KB |