Pagini recente » Cod sursa (job #2855994) | Cod sursa (job #794432) | Cod sursa (job #2898371) | Cod sursa (job #91634) | Cod sursa (job #418750)
Cod sursa(job #418750)
#include<fstream>
#include<queue>
#define dmax 305
using namespace std;
ifstream in("matrice2.in");
ofstream out("matrice2.out");
int n,q,a,b,c,d,mat[dmax][dmax],sol[dmax][dmax];
const int dx[]={0,1,0,-1};
const int dy[]={1,0,-1,0};
struct pas
{ int x;
int y;
int m;
};
queue<struct pas> cd;
int bune(int i,int j)
{ return (i>0 && i<=n && j>0 && j<=n);
}
void solve()
{ int ii,jj,k,i,j;
pas w,crt;
w.x=a;
w.y=b;
w.m=mat[a][b];
sol[a][b]=mat[a][b];
cd.push(w);
while(!cd.empty() )
{ crt=cd.front();
cd.pop();
for(k=0;k<4;k++)
{ ii=crt.x+dx[k];
jj=crt.y+dy[k];
if(bune(ii,jj) )
{ if(sol[ii][jj]==0)
{ sol[ii][jj]=min(crt.m,mat[ii][jj]);
w.x=ii;
w.y=jj;
w.m=sol[ii][jj];
cd.push(w);
}
else if(crt.m > sol[ii][jj] && mat[ii][jj] >= sol[crt.x][crt.y])
{ sol[ii][jj]=crt.m;
w.x=ii;
w.y=jj;
w.m=sol[ii][jj];
cd.push(w);
}
}
}
}
out<<sol[c][d]<<'\n';
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
sol[i][j]=0;
cd.empty();
}
int main()
{ int i,j;
in>>n>>q;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
in>>mat[i][j];
for(;q;q--)
{ in>>a>>b>>c>>d;
solve();
}
in.close();
out.close();
return 0;
}