#1433 : Boarding Passes

#include <iostream>
#include <cstring>
#include <map>

using namespace std;

int main()
{
    int n;
    cin >> n;

    map<string, int> degree;
    while(n>0){
        string str1, str2;
        cin >> str1 >> str2;

        if(degree.count(str1) == 0){
            degree[str1] = 1;
        }
        else{
            degree[str1]++;
        }
        if(degree.count(str2) == -1){
            degree.insert(map<string, int>::value_type(str2, 0));
        }
        else{
            degree[str2]--;
        }

        n--;
    }
    map<string, int>::iterator it;
    string start, finish;
    for(it = degree.begin(); it != degree.end(); it++){
       // cout << it->first << " " << it->second << endl;
        if(it->second == 1){
            start = it->first;
        }
        if(it->second == -1){
            finish = it->first;
        }
    }
    cout << start << " " << finish;
    return 0;
}


度为1的点是起点,度为-1的点是终点。

map的申明,插入(数组插入,insert插入),循环,删除 https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html

猜你喜欢

转载自blog.csdn.net/arcobaleno1996/article/details/81415694