이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bitset>
#include <cmath>
#include <functional>
#include <algorithm>
#include <numeric>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <unordered_map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <cstring>
#include <climits>
#define pb push_back
#define MOD 1000000007
#define NMAX 6000001
#define nl '\n'
#define INF 1000000007
#define pii1 pair<int, pair<int,int>> (1,(1,2));
#define pii pair<int,int>
#define tpl tuple<int,int,int>
using namespace std;
ifstream fin("data.in");
ofstream fout("data.out");
/*
====================DEMONSTRATION======================
n=2
1....#####..##
....##########
####..........
##########....
##########....
1....####....#
=========================END===========================
*/
int r,c,n;
int x,y,a,b,node_s,node_f;
int di[]={1,-1,0,0};
int dj[]={0,0,1,-1};
bool inmat(int i,int j)
{
return i>=1 && i<=r && j>=1 && j<=c;
}
const int R=x,L=y;
void bfs(int** mat)
{
deque<tpl>dq;
bool vis[r+1][c+1];
memset(vis,0,sizeof(vis));
vis[x][y]=1;
int ans=INF;
dq.push_front({x,y,0});
while(!dq.empty())
{
auto[i,j,cost]=dq.front();
dq.pop_front();
if(i==a && j==b)
ans=min(ans,cost);
for(int d=0;d<4;++d)
{
int inou=di[d]+i;
int jnou=dj[d]+j;
if(inmat(inou,jnou) && !vis[inou][jnou])
{
if(mat[inou][jnou]==0)
{
dq.push_front({inou,jnou,cost});
}
else
{
dq.push_back({inou,jnou,cost+1});
}
vis[inou][jnou]=1;
}
}
}
cout<<ans;
}
signed main() {
cin>>r>>c>>n;
int **mat= new int*[r+1];
for(int i=1;i<=r;++i)
mat[i]=new int[c+1];
cin>>x>>y;
cin>>a>>b;
for(int i=1;i<=r;++i)
{
for(int j=1;j<=c;++j)
{
char x;
cin>>x;
if(x=='.')
mat[i][j]=0;
else
mat[i][j]=1;
}
}
bfs(mat);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
Main.cpp: In function 'void bfs(int**)':
Main.cpp:65:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
65 | auto[i,j,cost]=dq.front();
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |