Submission #2661442
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
using Int = long long;
struct Kruskal{
struct UnionFind{
Int n;
vector<Int> r,p;
UnionFind(){}
UnionFind(Int sz):n(sz),r(sz,1),p(sz,0){iota(p.begin(),p.end(),0);}
Int find(Int x){
return (x==p[x]?x:p[x]=find(p[x]));
}
bool same(Int x,Int y){
return find(x)==find(y);
}
void unite(Int x,Int y){
x=find(x);y=find(y);
if(x==y) return;
if(r[x]<r[y]) swap(x,y);
r[x]+=r[y];
p[y]=x;
}
};
struct edge{
Int from,to,cost,used;
edge(){}
edge(Int from,Int to,Int cost):
from(from),to(to),cost(cost),used(0){}
bool operator<(const edge& e) const{
return cost<e.cost;
}
};
Int n;
vector<edge> edges;
Kruskal(){}
Kruskal(Int sz):n(sz){}
void add_edge(Int u,Int v,Int c){
edges.emplace_back(u,v,c);
}
void input(Int m,Int offset=0){
Int a,b,c;
for(Int i=0;i<m;i++){
cin>>a>>b>>c;
add_edge(a+offset,b+offset,c);
}
}
Int build(){
sort(edges.rbegin(),edges.rend());
UnionFind uf(n+1);
Int res=0;
for(auto &e:edges){
if(!uf.same(e.from,e.to)){
res+=e.cost;
uf.unite(e.from,e.to);
e.used=1;
}
}
return res;
}
};
template<typename T>
vector<T> make_v(size_t a){return vector<T>(a);}
template<typename T,typename... Ts>
auto make_v(size_t a,Ts... ts){
return vector<decltype(make_v<T>(ts...))>(a,make_v<T>(ts...));
}
template<typename T,typename V>
typename enable_if<is_class<T>::value==0>::type
fill_v(T &t,const V &v){t=v;}
template<typename T,typename V>
typename enable_if<is_class<T>::value!=0>::type
fill_v(T &t,const V &v){
for(auto &e:t) fill_v(e,v);
}
//INSERT ABOVE HERE
signed main(){
Int h,w;
cin>>h>>w;
Int sx,sy,gx,gy;
cin>>sx>>sy>>gx>>gy;
auto a=make_v<Int>(h,w);
for(Int i=0;i<h;i++)
for(Int j=0;j<w;j++)
cin>>a[i][j];
auto idx=[&](Int y,Int x){return y*w+x;};
Int ans=0;
Kruskal G(h*w);
for(Int i=0;i<h;i++){
for(Int j=0;j<w;j++){
ans+=a[i][j];
if(i+1<h) G.add_edge(idx(i,j),idx(i+1,j),a[i][j]*a[i+1][j]);
if(j+1<w) G.add_edge(idx(i,j),idx(i,j+1),a[i][j]*a[i][j+1]);
}
}
ans+=G.build();
cout<<ans<<endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Game on a Grid |
User |
beet |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2368 Byte |
Status |
AC |
Exec Time |
6 ms |
Memory |
1528 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 |
1528 KB |
subtask1_08.txt |
AC |
5 ms |
1528 KB |
subtask1_09.txt |
AC |
5 ms |
1528 KB |
subtask1_10.txt |
AC |
5 ms |
1528 KB |
subtask1_11.txt |
AC |
5 ms |
1528 KB |
subtask1_12.txt |
AC |
5 ms |
1528 KB |
subtask1_13.txt |
AC |
5 ms |
1528 KB |
subtask1_14.txt |
AC |
6 ms |
1528 KB |
subtask1_15.txt |
AC |
5 ms |
1528 KB |
subtask1_16.txt |
AC |
5 ms |
1528 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 |
1528 KB |
subtask1_21.txt |
AC |
5 ms |
1528 KB |
subtask1_22.txt |
AC |
5 ms |
1528 KB |
subtask1_23.txt |
AC |
5 ms |
1528 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 |