문제
링크
풀이
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
inline pair<int, int> search(int m, const vector<vector<char>> &v, char c) {
for (int i=0; i<m; i++) for (int j=0; j<m; j++) {
if (v[i][j] == c) return {i, j};
}
return {-1, -1};
}
inline double dist(const pair<int, int> &a, const pair<int, int> &b) {
return hypot(a.first-b.first, a.second-b.second);
}
void solve(void) {
int m; cin >> m;
vector<vector<char>> v(m, vector<char>(m));
for (int i=0; i<m; i++) for (int j=0; j<m; j++) cin >> v[i][j];
pair<int, int> a = search(m, v, 's');
vector<pair<double, pair<int, int>>> b;
for (int i=0; i<m; i++) for (int j=0; j<m; j++) {
if (v[i][j] != 'p') continue;
b.push_back({dist(a, {i, j}), {i, j}});
}
sort(b.begin(), b.end());
cout << "(" << a.first << "," << a.second << "):";
cout << "(" << b[0].second.first << "," << b[0].second.second << "):";
cout << fixed << setprecision(2) << b[0].first << "\n";
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
while (n--) solve();
return 0;
}