比赛 !信心赛 评测结果 AAAAAAAAAA
题目名称 海拔 最终得分 100
用户昵称 yyswys 运行时间 0.701 s
代码语言 C++ 内存使用 32.89 MiB
提交时间 2026-01-17 10:14:07
显示代码纯文本
#include<bits/stdc++.h>
#define cin std::cin
#define cout std::cout
#define ciallo ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
const int N=1e6+5;
int n,ans,d[N],vis[N],tot=1,s,t;
struct edge{
	int to,w;
};
vector<edge>e[N];
struct cmp{
	int id,w;
	bool operator <(const cmp &a)const{
		return w>a.w;
	}
};
priority_queue<cmp> q;
int dij(){
	memset(d,0x3f3f3f3f,sizeof(d));
	q.push({s,0});
	d[s]=0;
	while(!q.empty()){
		int f=q.top().id;
		q.pop();
		if(vis[f]) continue;
		vis[f]=1;
		for(auto i:e[f]){
			int v=i.to,w=i.w;
			if(d[f]+w<d[v]){
				d[v]=d[f]+w;
				q.push({v,d[v]});
			}
		}
	}
	return d[t];
}
int main(){
	freopen("altitude.in","r",stdin);
	freopen("altitude.out","w",stdout);
	ciallo
	cin>>n;
	s=0,t=(n+1)*(n+1)+1;
	for(int i(1);i<=n+1;++i){
		for(int j(1);j<=n;++j){
			int w;
			cin>>w;
			if(i==1) e[s].push_back({(i-1)*n+j,w});
			else if(i==n+1) e[(i-2)*n+j].push_back({t,w});  
			else e[(i-2)*n+j].push_back({(i-1)*n+j,w});
		}
	}
	for(int i(1);i<=n;++i){
		for(int j(1);j<=n+1;++j){
			int w;
			cin>>w;
			if(j==1) e[(i-1)*n+j].push_back({t,w});
			else if(j==n+1) e[s].push_back({(i-1)*n+j-1,w});
			else e[(i-1)*n+j].push_back({(i-1)*n+j-1,w});
		}
	}
	for(int i(1);i<=n+1;++i){
		for(int j(1);j<=n;++j){
			int w;
			cin>>w;
			if(i==1) e[(i-1)*n+j].push_back({s,w});
			else if(i==n+1) e[t].push_back({(i-2)*n+j,w});
			else e[(i-1)*n+j].push_back({(i-2)*n+j,w});
		}
	}
	for(int i(1);i<=n;++i){
		for(int j(1);j<=n+1;++j){
			int w;
			cin>>w;
			if(j==1) e[t].push_back({(i-1)*n+j,w});
			else if(j==n+1) e[(i-1)*n+j-1].push_back({s,w});
			else e[(i-1)*n+j-1].push_back({(i-1)*n+j,w});
		}
	}
	cout<<dij()<<"\n";
	return 0;
}