Submission #2798859
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define repd(i,a,b) for(int i=a;i<b;i++)
#define repds(i,a,b) for(int i=a+1;i<=b;i++)
#define rep(i,N) repd(i,0,N)
#define reps(i,N) repds(i,0,N)
#define debug(x) cout<<#x<<"="<<x<<endl
#define debugarr(arr,N,M){rep(i,N+1){rep(j,M+1){if(arr[i][j]==INF)printf(" INF");\
else printf(" %3d",arr[i][j]);} cout<<endl;}}
#define pb push_back
#define pob pop_back
#define cint(a) int a;cin>>a
#define cint2(a,b) int a,b;cin>>a>>b
#define cint3(a,b,c) int a,b,c;cin>>a>>b>>c
typedef long long ll;
typedef pair<int,int> P;
const int INF=100000000;
const int dx[4]={ 0, 1, 0,-1};
const int dy[4]={ 1, 0,-1, 0};
struct UnionFind {vector<int> par, cnt;
UnionFind(int NV) { par.clear(); cnt.resize(NV, 1); rep(i, NV) par.push_back(i); }
void reset() { rep(i, cnt.size()) cnt[i] = 1; rep(i, par.size()) par[i] = i; }
int operator[](int x) { return par[x] == x ? x : par[x] = operator[](par[x]); }
void operator()(int x, int y) {x = operator[](x); y = operator[](y);
if (x != y) par[x] = y, cnt[y] += cnt[x];}};
//--------------------------------------//
struct E{ int cost,from,to;
bool operator<(E& e) {
return cost < e.cost;
}
bool operator>(const E& e)const {
return cost > e.cost;
}
};
int main(){
int h,w;
cin>>h>>w;
int _;
cin>>_>>_>>_>>_;
int m[100][100];
int ans=0;
rep(i,h) rep(j,w){
cin>>m[i][j];
ans+=m[i][j];
}
vector<E> e;
rep(i,h) rep(j,w-1){
e.pb({m[i][j]*m[i][j+1],i*w+j+1,i*w+j});
}
rep(i,w) rep(j,h-1){
e.pb({m[j][i]*m[j+1][i],j*w+i+w,j*w+i});
}
sort(e.begin(),e.end(),greater<E>());
UnionFind uf(h*w);
rep(i,e.size()){
if(uf[e[i].from]!=uf[e[i].to]){
uf(e[i].from,e[i].to);
ans+=e[i].cost;
}
}
cout<<ans<<endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Game on a Grid |
User |
yukkuriesu |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
1818 Byte |
Status |
AC |
Exec Time |
5 ms |
Memory |
832 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 |
5 ms |
832 KB |
subtask1_08.txt |
AC |
5 ms |
832 KB |
subtask1_09.txt |
AC |
5 ms |
832 KB |
subtask1_10.txt |
AC |
5 ms |
832 KB |
subtask1_11.txt |
AC |
5 ms |
832 KB |
subtask1_12.txt |
AC |
5 ms |
832 KB |
subtask1_13.txt |
AC |
5 ms |
832 KB |
subtask1_14.txt |
AC |
5 ms |
832 KB |
subtask1_15.txt |
AC |
5 ms |
832 KB |
subtask1_16.txt |
AC |
4 ms |
832 KB |
subtask1_17.txt |
AC |
1 ms |
256 KB |
subtask1_18.txt |
AC |
1 ms |
256 KB |
subtask1_19.txt |
AC |
1 ms |
256 KB |
subtask1_20.txt |
AC |
4 ms |
832 KB |
subtask1_21.txt |
AC |
4 ms |
832 KB |
subtask1_22.txt |
AC |
5 ms |
832 KB |
subtask1_23.txt |
AC |
5 ms |
832 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 |