Submission #3791976
Source Code Expand
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = int(a); i < int(b); i++)
#define rer(i, a, b) for(int i = int(a) - 1; i >= int(b); i--)
using namespace std;
typedef long long int ll;
const int MAX_V=10010;
int par[MAX_V]; //親
int height[MAX_V]; //木の深さ
//n要素で初期化
void init (int n){
for (int i=0;i<n;i++){
par[i]=i;
height[i]=0;
}
}
//木の根を求める
int find (int x){
if (par[x]==x){
return x;
}
else{
return par[x] = find(par[x]);
}
}
//xとyの属する集合を併合
void unite (int x, int y){
x=find(x);
y=find(y);
if (x==y) return;
if (height[x] < height[y]){
par[x]=y;
}
else {
par[y]=x;
if (height[x]==height[y]) height[x]++;
}
}
//xとyが同じ集合に属するか否か
bool same (int x, int y){
return find(x) == find(y);
}
struct edge {int u, v, cost; };
bool comp(const edge& e1, const edge& e2){
return e1.cost > e2.cost;
}
vector<edge> es;
int V, E/*, p[100][100]*/;
int kruscal(){
sort(es.begin(), es.begin()+E, comp); //edge.costが小さい順にソート
init(V);
int res=0;
rep(i,0,E){
edge e=es[i];
if (!same(e.u, e.v)){
unite(e.u, e.v);
res+=e.cost;
}
}
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int H,W,Sx,Sy,Gx,Gy;
cin>>H>>W;
cin>>Sx>>Sy;
cin>>Gx>>Gy;
Sx--;Sy--;Gx--;Gy--;
int sum=0;
int p[H][W];
rep(i,0,H){
rep(j,0,W){
cin>>p[i][j];
sum+=p[i][j];
}
}
V=H*W;
E=2*V-H-W;
rep(i,0,H){
rep(j,0,W-1){
es.push_back(edge{W*i+j,W*i+j+1,p[i][j]*p[i][j+1]});
}
}
rep(i,0,H-1){
rep(j,0,W){
es.push_back(edge{W*i+j,W*i+j+W,p[i][j]*p[i+1][j]});
}
}
cout<<kruscal()+sum<<"\n";
}
Submission Info
Submission Time |
|
Task |
D - Game on a Grid |
User |
yuki1997 |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2029 Byte |
Status |
AC |
Exec Time |
4 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 |
4 ms |
832 KB |
subtask1_08.txt |
AC |
4 ms |
832 KB |
subtask1_09.txt |
AC |
4 ms |
832 KB |
subtask1_10.txt |
AC |
4 ms |
832 KB |
subtask1_11.txt |
AC |
4 ms |
832 KB |
subtask1_12.txt |
AC |
4 ms |
832 KB |
subtask1_13.txt |
AC |
4 ms |
832 KB |
subtask1_14.txt |
AC |
4 ms |
832 KB |
subtask1_15.txt |
AC |
4 ms |
832 KB |
subtask1_16.txt |
AC |
3 ms |
832 KB |
subtask1_17.txt |
AC |
2 ms |
256 KB |
subtask1_18.txt |
AC |
2 ms |
256 KB |
subtask1_19.txt |
AC |
2 ms |
256 KB |
subtask1_20.txt |
AC |
3 ms |
832 KB |
subtask1_21.txt |
AC |
4 ms |
832 KB |
subtask1_22.txt |
AC |
4 ms |
832 KB |
subtask1_23.txt |
AC |
4 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 |