L2-044 大众情人
#include <bits/stdc++.h>
using namespace std;
int n, k;
vector<int> man, woman;
int dis[510][510];
map<int, set<int>> mp;
void find(){
for(int i = 0; i < woman.size(); ++i){
int score = 0;
for(int j = 0; j < man.size(); ++j){
score = max(score, dis[man[j]][woman[i]]);
}
mp[score].insert(woman[i]);
}
bool flag = false;
for(auto it: mp.begin()->second){
if(flag) cout << " ";
flag = true;
cout << it;
}
cout << endl;
mp.clear();
for(int i = 0; i < man.size(); ++i){
int score = 0;
for(int j = 0; j < woman.size(); ++j){
score = max(score, dis[woman[j]][man[i]]);
}
mp[score].insert(man[i]);
}
flag = false;
for(auto it: mp.begin()->second){
if(flag) cout << " ";
flag = true;
cout << it;
}
}
signed main(){
cin >> n;
memset(dis, 0x3f, sizeof dis);
for(int i = 1; i <= n; ++i){
char c; cin >> c;
if(c == 'M') man.push_back(i);
else woman.push_back(i);
cin >> k;
for(int j = 1; j <= k; ++j){
int x, d; cin >> x >> c >> d;
// cout << x << " " << d << endl;
dis[i][x] = d;
}
}
// cout << dis[1][4] <<endl;
for(int k = 1; k <= n; ++k){
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j)
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
find();
return 0;
}