Pagini recente » Cod sursa (job #1585668) | Cod sursa (job #770688) | Cod sursa (job #2269883) | Cod sursa (job #434617) | Cod sursa (job #2961129)
/*
"TLE is like the wind, always by my side"
- Yasuo - 2022 -
*/
#include <bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
using namespace std;
struct coord
{
int lin;
int col;
int dist;
};
int dcol[8] = {0, 0, 1, -1, -1, 1, 1, -1};
int dlin[8] = {1, -1, 0, 0, -1, 1, -1, 1};
queue <coord> q;
queue <coord> q2;
bool visitedr[103][103];
int distansr[103][103];
bool visitedj[103][103];
int distansj[103][103];
char a[103][103];
int main()
{
ifstream fin("rj.in");
ofstream fout("rj.out");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m,i,j,l,c,mi,is,js;
char ch;
coord frontnode;
fin >> n >> m >> noskipws;
i=0;
while (fin>>ch)
{
if (ch!='J' && ch!='R' && ch!='X' && ch!=' ')
{
i++;
j=1;
}
else
{
if (ch=='J')
q2.push({i,j,1});
if (ch=='R')
q.push({i,j,1});
a[i][j]=ch;
j++;
}
}
for (i=0; i<=n+1; i++)
{
a[i][0]='X';
a[i][m+1]='X';
}
for (i=0;i<=m+1;i++)
{
a[0][i]='X';
a[n+1][i]='X';
}
while (!q.empty())
{
frontnode=q.front();
if (!visitedr[frontnode.lin][frontnode.col])
{
visitedr[frontnode.lin][frontnode.col]=1;
distansr[frontnode.lin][frontnode.col]=frontnode.dist;
for (i=0; i<8; i++)
{
l=frontnode.lin;
c=frontnode.col;
l+=dlin[i];
c+=dcol[i];
if (a[l][c]!='X')
q.push({l,c,frontnode.dist+1});
}
}
q.pop();
}
while (!q2.empty())
{
frontnode=q2.front();
if (!visitedj[frontnode.lin][frontnode.col])
{
visitedj[frontnode.lin][frontnode.col]=1;
distansj[frontnode.lin][frontnode.col]=frontnode.dist;
for (i=0; i<8; i++)
{
l=frontnode.lin;
c=frontnode.col;
l+=dlin[i];
c+=dcol[i];
if (a[l][c]!='X')
q2.push({l,c,frontnode.dist+1});
}
}
q2.pop();
}
mi=n*m*2;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
if (visitedr[i][j] && visitedj[i][j])
{
if (distansr[i][j]==distansj[i][j])
{
if (distansr[i][j]<mi)
{
mi=distansr[i][j];
is=i;
js=j;
}
}
}
}
}
fout << mi << " " << is << " " << js;
}