简单简单捏
```
#include <bits/stdc++.h> using namespace std; const int N = 1e3+10; const int mod =11451419; #define endl '\n' #define Endl '\n' #define inf 1e18 #define fast ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); int n,d[N][N],dx[4]={1,0,-1,0},dy[4]={0,1,0,-1}; bool g[N][N]; signed main(){ fast cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>g[i][j]; } } queue<pair<int,int>>q; q.push({0,0}); memset(d,0x3f,sizeof d); d[0][0]=0; while(!q.empty()){ auto [x,y]=q.front(); q.pop(); for(int i=0;i<4;i++){ int a=x+dx[i],b=y+dy[i]; if(a>=0&&a<=n-1&&b>=0&&b<=n-1&&!g[a][b]&&d[a][b]==0x3f3f3f3f){ d[a][b]=d[x][y]+1; q.push({a,b}); } } } vector<pair<int,int>>v; q.push({n-1,n-1}); v.push_back({n-1,n-1}); while(!q.empty()){ auto [x,y]=q.front(); q.pop(); for(int i=0;i<4;i++){ int a=x+dx[i],b=y+dy[i]; if(a>=0&&a<=n-1&&b>=0&&b<=n-1&&d[a][b]==d[x][y]-1){ q.push({a,b}); v.push_back({a,b}); break; } } } for(int i=v.size()-1;i>=0;i--)cout<<v[i].first<<' '<<v[i].second<<endl; return 0^0; }
```