Submission #377939
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;
typedef long long ll;
const int INF = 1e9;
int dx[] = {0,-1,0,1};
int dy[] = {-1,0,1,0};
bool used[101][101];
struct UnionFind {
vector<int> data;
UnionFind(int size) : data(size, -1) { }
bool unite(int x, int y) {
x = root(x); y = root(y);
if (x != y) {
if (data[y] < data[x]) swap(x, y);
data[x] += data[y]; data[y] = x;
}
return x != y;
}
bool same(int x, int y) {
return root(x) == root(y);
}
int root(int x) {
return data[x] < 0 ? x : data[x] = root(data[x]);
}
int size(int x) {
return -data[root(x)];
}
};
struct edge{
int u,v;
int cost;
bool operator<(const edge& e)const{
return cost > e.cost;
}
};
class Kruskal{
public:
UnionFind uf;
vector<edge> es;
int V;
Kruskal(int V,vector<edge> es):uf(V),es(es){}
int exec(){
sort(es.begin(),es.end());
ll res = 0;
for(int i=0;i<es.size();i++){
edge e = es[i];
if(!uf.same(e.u,e.v)){
uf.unite(e.u,e.v);
res += e.cost;
}
}
return res;
}
};
int transgraph(int x,int y,int w){
return (y*w)+x;
}
int main(void) {
int h,w;
int sx,sy,gx,gy;
cin >> h >> w;
cin >> sx >> sy >> gx >> gy;
vector<vector<int>> p(h,vector<int>(w));
ll sum = 0;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin >> p[i][j];
sum += p[i][j];
}
}
vector<edge> es(w*h+1);
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
for(int k=0;k<4;k++){
int nx = j + dx[k],ny = i + dy[k];
if(nx < 0 || ny < 0 || nx >= w || ny >= h)continue;
int v = transgraph(j,i,w),nv = transgraph(nx,ny,w);
int c = p[i][j]*p[ny][nx];
es.push_back(edge{v,nv,c});
}
}
}
Kruskal kruskal(w*h+1,es);
cout << kruskal.exec()+sum << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Game on a Grid |
User |
tkzw_21 |
Language |
C++11 (GCC 4.9.2) |
Score |
100 |
Code Size |
2029 Byte |
Status |
AC |
Exec Time |
41 ms |
Memory |
2664 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 |
26 ms |
808 KB |
subtask0_sample_02.txt |
AC |
35 ms |
736 KB |
subtask0_sample_03.txt |
AC |
25 ms |
764 KB |
subtask1_01.txt |
AC |
24 ms |
800 KB |
subtask1_02.txt |
AC |
25 ms |
804 KB |
subtask1_03.txt |
AC |
25 ms |
800 KB |
subtask1_04.txt |
AC |
24 ms |
808 KB |
subtask1_05.txt |
AC |
25 ms |
928 KB |
subtask1_06.txt |
AC |
26 ms |
796 KB |
subtask1_07.txt |
AC |
40 ms |
2648 KB |
subtask1_08.txt |
AC |
41 ms |
2656 KB |
subtask1_09.txt |
AC |
39 ms |
2648 KB |
subtask1_10.txt |
AC |
40 ms |
2656 KB |
subtask1_11.txt |
AC |
40 ms |
2664 KB |
subtask1_12.txt |
AC |
40 ms |
2660 KB |
subtask1_13.txt |
AC |
39 ms |
2588 KB |
subtask1_14.txt |
AC |
39 ms |
2652 KB |
subtask1_15.txt |
AC |
38 ms |
2648 KB |
subtask1_16.txt |
AC |
36 ms |
2656 KB |
subtask1_17.txt |
AC |
26 ms |
800 KB |
subtask1_18.txt |
AC |
26 ms |
800 KB |
subtask1_19.txt |
AC |
26 ms |
928 KB |
subtask1_20.txt |
AC |
36 ms |
2648 KB |
subtask1_21.txt |
AC |
37 ms |
2652 KB |
subtask1_22.txt |
AC |
37 ms |
2664 KB |
subtask1_23.txt |
AC |
37 ms |
2652 KB |
subtask1_24.txt |
AC |
25 ms |
800 KB |
subtask1_25.txt |
AC |
25 ms |
804 KB |
subtask1_26.txt |
AC |
26 ms |
932 KB |
subtask1_27.txt |
AC |
24 ms |
924 KB |
subtask1_28.txt |
AC |
25 ms |
920 KB |
subtask1_29.txt |
AC |
25 ms |
804 KB |