結果
| 問題 |
No.1283 Extra Fee
|
| コンテスト | |
| ユーザー |
yamake
|
| 提出日時 | 2020-11-06 22:53:27 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,429 bytes |
| コンパイル時間 | 1,290 ms |
| コンパイル使用メモリ | 111,644 KB |
| 最終ジャッジ日時 | 2025-01-15 21:11:09 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 14 |
ソースコード
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<queue>
#include<cmath>
#include<cstdio>
#include<tuple>
#include<bitset>
#include<map>
using namespace std;
#define int long long
#define rep(i,n) for(int i=0;i<n;++i)
#define rep1(i,n) for(int i=1;i<=n;++i)
#define ALL(x) x.begin(),x.end()
#define debug(output) cout<<#output<<"= "<<output<<endl
using P=pair<int,int>;
using lint=long long;
using ll=long long;
const lint inf=1e18+7;
const int MOD=1000000007;
signed main(){
int n,m;cin>>n>>m;
vector<vector<vector<lint>>> dist(n+1,vector<vector<lint>>(n+1,vector<lint>(2,inf)));
dist[1][1][0]=0;
vector<vector<lint>> cost(n+1,vector<lint>(n+1,0));
rep(i,m){
int h,w,c;cin>>h>>w>>c;
cost[h][w]=c;
}
queue<tuple<int,int,int>> que;
que.push({1,1,0});
vector<int> dx={1,0,-1,0};
vector<int> dy={0,1,0,-1};
while(!que.empty()){
auto buf=que.front();que.pop();
auto [xx,yy,flag]=buf;
lint cur=dist[yy][xx][flag];
rep(i,4){
int x=xx+dx[i];
int y=yy+dy[i];
if(x<=0||x>n)continue;
if(y<=0||y>n)continue;
if(dist[y][x][flag]>cur+1+cost[y][x]){
dist[y][x][flag]=cur+1+cost[y][x];
que.push({y,x,flag});
}
if(flag==0){
if(dist[y][x][1]>cur+1){
dist[y][x][1]=cur+1;
que.push({y,x,1});
}
}
}
}
cout<<min(dist[n][n][0],dist[n][n][1])<<"\n";
return 0;
}
yamake