#include <iostream>
#include <vector>
using namespace std;
const int N = 505;
int d[N][N], sex[N];
int df[N], dm[N];
vector<int> ans;
void out() {
for (int i = 0; i < ans.size(); i++) {
cout << ans[i] << " \n"[i == ans.size() - 1];
}
ans.clear();
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
d[i][j] = d[j][i] = (i == j ? 0 : 1E9);
}
}
for (int i = 1; i <= n; i++) {
char c;
cin >> c;
if (c == 'M') {
sex[i] = 1;
}
int k;
cin >> k;
while (k --) {
int to, dis;
scanf("%d:%d", &to, &dis);
d[i][to] = min(d[i][to], dis);
}
}
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (d[i][j] > d[i][k] + d[k][j])
d[i][j] = d[i][k] + d[k][j];
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (sex[i] != sex[j]) {
if (sex[i] == 0) {
dm[j] = max(dm[j], d[i][j]);
} else {
df[j] = max(df[j], d[i][j]);
}
}
}
}
int mi = 1E9;
for (int i = 1; i <= n; i++) {
if (sex[i] == 0 && df[i] < mi) mi = df[i];
}
for (int i = 1; i <= n; i++) {
if (sex[i] == 0 && df[i] == mi) ans.push_back(i);
}
out();
mi = 1E9;
for (int i = 1; i <= n; i++) {
if (sex[i] == 1 && dm[i] < mi) mi = dm[i];
}
for (int i = 1; i <= n; i++) {
if (sex[i] == 1 && dm[i] == mi) ans.push_back(i);
}
out();
return 0;
}
PTA L2-044 大众情人
于 2023-04-12 08:04:47 首次发布