Pagini recente » Cod sursa (job #1836473) | Cod sursa (job #338203) | Cod sursa (job #2248421) | Cod sursa (job #3005367) | Cod sursa (job #2836899)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("matrice2.in");
ofstream fout("matrice2.out");
struct Elem
{
int cost,x,y;
bool operator<(const Elem A)const
{
return cost<A.cost;
}
};
int n,m;
int a[305][305];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
void Bordare()
{
for(int i=0;i<=n+1;i++)
a[i][0]=a[i][n+1]=a[0][i]=a[n+1][i]=2e9;
}
void Skema(int x1,int y1,int x2,int y2)
{
int x,y;
bitset<305>viz[305];
int cost_min=min(a[x1][y1],a[x2][y2]);
priority_queue<Elem>q;
q.push({a[x1][y1],x1,y1});
while(q.top().x!=x2||q.top().y!=y2)
{
x=q.top().x;
y=q.top().y;
if(abs(x-x2)+abs(y-y2)==1)break;
cout<<x<<" "<<y<<"\n\n";
viz[x][y]=1;
cost_min=min(cost_min,a[x][y]);
q.pop();
for(int k=0;k<4;k++)
{
int i=x+dx[k];
int j=y+dy[k];
if(!viz[i][j]&&a[i][j]!=2e9)
{
cout<<i<<" "<<j<<"\n";
q.push({a[i][j],i,j});
}
}
cout<<"\n";
}
fout<<cost_min<<"\n";
}
int main()
{
int i,j;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>a[i][j];
Bordare();
while(m--)
{
int x1,x2,y1,y2;
fin>>x1>>y1>>x2>>y2;
Skema(x1,y1,x2,y2);
}
return 0;
}