Pagini recente » Cod sursa (job #2064117) | Cod sursa (job #1005852) | Cod sursa (job #140207) | Cod sursa (job #867992) | Cod sursa (job #2987799)
#include <iostream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <functional>
#include <cassert>
using namespace std;
struct cord
{
int y,x;
bool in(int n,int m)
{
return (y>=0 && y<n && x>=0 && x<m);
}
};
int dl[]={1,-1,0,0,1,1,-1,-1};
int dc[]={0,0,1,-1,1,-1,1,-1};
void get_ans(vector<vector<int>>&rez,const vector<string>&s,cord x,int n,int m)
{
queue<cord>q;
q.push(x);
rez[x.y][x.x]=0;
while(q.size())
{
cord then=q.front();
q.pop();
for(int i=0;i<8;i++)
{
cord acm={then.y+dl[i],then.x+dc[i]};
if(acm.in(n,m) && s[acm.y][acm.x]!='X' && rez[acm.y][acm.x]==2e9)
{
rez[acm.y][acm.x]=rez[then.y][then.x]+1;
q.push(acm);
}
}
}
}
int solve()
{
int n,m;
cin>>n>>m;
cin.get();
vector<string>s(n);
for(auto &c:s)c.resize(m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
s[i][j]=cin.get();
}
cin.get();
}
vector<vector<vector<int>>>rez(2,vector<vector<int>>(n,vector<int>(m,2e9)));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]=='R')
{
get_ans(rez[0],s,{i,j},n,m);
}
if(s[i][j]=='J')
{
get_ans(rez[1],s,{i,j},n,m);
}
}
}
int minn=2e9;
cord rezz;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(rez[0][i][j]==rez[1][i][j] && rez[0][i][j]<minn)
{
minn=rez[0][i][j];
rezz={i,j};
}
}
}
cout<<minn+1<<' '<<rezz.y+1<<' '<<rezz.x+1;
}
main()
{
auto sol=[](bool x)->string
{
if(x)return "Yes";
return "No";
};
int tt=1;
//cin>>tt;
while(tt--)
{
solve();
}
}