L2-044 大众情人(团体程序设计天梯赛-练习集)

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;
}
posted @ 2025-03-08 14:25  awei040519  阅读(75)  评论(0)    收藏  举报