C++标准模版库STL之map

例题

C++标准模版库STL之map_第1张图片

代码

//
//  105.cpp
//  产生冠军
//
//  Created by chenmeiqi on 2019/5/5.
//  Copyright © 2019年 chenmeiqi. All rights reserved.
//

#include 
#include 
using namespace std;

int main(int argc, const char * argv[]) {
    int n;
    string s1,s2;           // 保存两个选手名称
    map player;         // 定义一个完成从string到int映射的map
    int idx;
    int inDegree[2000];         // n<1000 组
    int res;
    while (cin>>n) {
        player.clear();     // 对map中的映射关系清空
        idx=0;      // 下一个被映射的数字
        for (int i=0; i<2*n; i++) {     // n组胜负关系,至多存在n个队伍
            inDegree[i]=0;          // 初始化入度
        }
        res=0;                  // 共有y几个入度为0的结点
        if (n==0) {
            break;
        }
        int tmp_n=n;
        while (tmp_n--) {
            cin>>s1>>s2;
            int idxb;
            if (player.find(s1)==player.end()) {        // map中无对s1的映射
                player[s1]=idx;                     // 设定其映射为idx,并递增idx
                idx++;
            }
            if (player.find(s2)==player.end()) {        // map中无对s2的映射
                player[s2]=idx;
                inDegree[idx]++;                    // s2对应的映射的入度加1
                idx++;
            }
            else{                                  // map中有对s2的映射
                idxb=player[s2];                // 直接读出该映射
                inDegree[idxb]++;
            }
        }
        for (int i=0; i

分析

C++标准模版库STL之map_第2张图片

你可能感兴趣的:(c++)