https://atcoder.jp/contests/agc033/tasks/agc033_a
にある問題を解こうとしたのですが以下のコードを実行するとsegmentation fault
となりました。原因が分かれば教えていただきたいです。
c++
1#include <bits/stdc++.h> 2using namespace std; 3typedef long long ll; 4typedef long double ld; 5typedef pair<int, int> P; 6const ll mod = 1000000007; 7const ll INF = 1e+14; 8#define rep(i,n) for(int i=0;i<n;i++) 9#define per(i,n) for(int i=n-1;i>=0;i--) 10#define Rep(i,sta,n) for(int i=sta;i<n;i++) 11#define rep1(i,n) for(int i=1;i<=n;i++) 12#define per1(i,n) for(int i=n;i>=1;i--) 13#define Rep1(i,sta,n) for(int i=sta;i<=n;i++) 14#define _GLIBCXX_DEBUG 15 16int main(){ 17 int h,w; cin>>h>>w; 18 vector<string> field(h); 19 rep(i,h){ 20 cin>>field[i]; 21 } 22 23 ll dist1[1010][1010]; 24 rep(i,1010){ 25 rep(j,1010){ 26 dist1[i][j]=INF; 27 } 28 } 29 30 rep(i,h){ 31 rep(j,w){ 32 if(field[i][j]=='.') continue; 33 else { 34 ll dist[1010][1010]; 35 rep(k,1010){ 36 rep(l,1010){ 37 dist[k][l]=INF; 38 } 39 } 40 queue<P> que; 41 //初期条件 42 dist[i][j]=0; 43 que.push({i,j}); 44 int dx[4]={-1,1,0,0}; 45 int dy[4]={0,0,-1,1}; 46 while (que.empty()){ 47 P v=que.front(); 48 que.pop(); 49 rep(k,4){ 50 int nh=i+dx[k]; 51 int nw=j+dy[k]; 52 if(nh<0||nh>=h||nw<0||nw>=w) continue; 53 if(dist[nh][nw]!=INF) continue; 54 if(field[nh][nw]=='#') continue; 55 dist[nh][nw]=dist[v.first][v.second]+1; 56 dist1[nh][nw]=min(dist1[nh][nw],dist[nh][nw]); 57 que.push({nh,nw}); 58 } 59 60 } 61 62 } 63 } 64 } 65 66 ll ans=0; 67 rep(i,h){ 68 rep(j,w){ 69 if(dist1[i][j]==INF) continue; 70 else{ 71 ans=max(ans,dist1[i][j]); 72 } 73 } 74 } 75 cout<<ans<<endl; 76 77 78 79}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 12:55
2020/08/20 13:45