Pagini recente » Cod sursa (job #375475) | Cod sursa (job #1601205) | Cod sursa (job #1535578) | Cod sursa (job #1159774) | Cod sursa (job #2958200)
/*
"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[5] = {0, 0, 1, -1};
int dlin[5] = {1, -1, 0, 0};
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("secvp.in");
ofstream fout("secvp.out");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m,i,j,l,c,mx,mi,is,js;
coord frontnode;
char enter;
fin >> n >> m >> noskipws >> ws;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
fin >> a[i][j];
if (a[i][j]=='R')
q.push({i,j,0});
if (a[i][j]=='J')
q2.push({i,j,0});
}
fin >> ws;
}
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<4; 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<4; 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;
}