# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
831214 | Srivardhan_M | Tracks in the Snow (BOI13_tracks) | C++14 | 2110 ms | 322484 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
const long long infty = 1e18;
#define num1 1000000007
#define num2 998244353
#define rep(i,a,n) for(ll i=a;i<n;i++)
#define repd(i,a,n) for(ll i=a; i>=n; i--)
#define pb push_back
#define pob pop_back
#define f first
#define s second
#define fix(f,n) std::fixed<<std::setprecision(n)<<f
#define all(x) x.begin(), x.end()
#define M_PI 3.14159265358979323846
#define epsilon (double)(0.000000001)
#define popcount __builtin_popcountll
#define fileio(x) freopen("input.txt", "r", stdin); freopen(x, "w", stdout);
#define out(x) cout << ((x) ? "Yes" : "No")<<endl;
#define len(x) x.size()
#define vvll(vec,n,m) vector<vector<long long>> vec(n, vector<long long> (m))
#define start_clock() auto start_time = std::chrono::high_resolution_clock::now();
#define measure() auto end_time = std::chrono::high_resolution_clock::now(); cerr << (end_time - start_time)/std::chrono::milliseconds(1) << "ms" << endl;
#define println(x) cout<<x<<"\n";
typedef long long ll;
typedef long double ld;
typedef vector<long long> vll;
typedef pair<long long, long long> pll;
typedef vector<pair<long long, long long>> vpll;
typedef vector<int> vii;
ll sqr(ll x){
return x*x;
}
void print(vector<vll> &v){
cout<<"=========================="<<endl;
rep(i, 0, v.size()) {
rep(j, 0, v[i].size()) cout<<v[i][j]<<" ";
cout<<endl;
}
cout<<"=========================="<<endl;
}
void print(vll &v){
cout<<"=========================="<<endl;
rep(i, 0, v.size()) cout<<v[i]<<" ";
cout<<endl;
cout<<"=========================="<<endl;
}
ll n, m;
ll dx[4]{1, -1, 0, 0}, dy[4]{0, 0, 1, -1};
ll inside(ll x, ll y, vector<string> &v){
if(x<0 || x>=n || y<0 || y>=m || v[x][y] == '.') return 0;
return 1;
}
void solve(){
cin>>n>>m;
vector<string> vec(n);
rep(i,0,n) cin>>vec[i];
vector<vll> d(n, vll(m, infty));
d[0][0] = 0;
deque<pll> q;
q.push_back({0, 0});
ll maxi = 0;
while(!q.empty()){
pll pr = q.front();
ll u = pr.f;
ll v = pr.s;
maxi = max(maxi, d[u][v]);
rep(i, 0, 4){
ll x= u+dx[i];
ll y = v+dy[i];
if(!inside(x, y, vec)) continue;
ll w = (vec[u][v] == vec[x][y])? 0: 1;
if(d[u][v]+w < d[x][y]){
d[x][y] = d[u][v]+w;
if(w == 1) q.push_back({x, y});
else q.push_front({x, y});
}
}
}
cout<<maxi+1<<endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll t = 1;
// cin>>t;
while(t--){
solve();
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |