1121. Damn Single (25)

来源:互联网 发布:红五图库永久域名三毛 编辑:程序博客网 时间:2024/05/21 22:46

"Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are supposed to find those who are alone in a big party, so they can be taken care of.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (<=50000), the total number of couples. Then N lines of the couples follow, each gives a couple of ID's which are 5-digit numbers (i.e. from 00000 to 99999). After the list of couples, there is a positive integer M (<=10000) followed by M ID's of the party guests. The numbers are separated by spaces. It is guaranteed that nobody is having bigamous marriage (重婚) or dangling with more than one companion.

Output Specification:

First print in a line the total number of lonely guests. Then in the next line, print their ID's in increasing order. The numbers must be separated by exactly 1 space, and there must be no extra space at the end of the line.

Sample Input:
311111 2222233333 4444455555 66666755555 44444 10000 88888 22222 11111 23333
Sample Output:
510000 23333 44444 55555 88888
这个题我用了一个map关联容器M,每次输入一对couple就将对应的值存入关联容器中,例如输入11111 22222  那么M[11111]=22222,M[222222]=11111

然后用一个vector容器盛ds 盛放单身狗,每次输入一个顾客,都要去ds容器里检索一遍,看看有没有这个顾客的老伴(哈哈),如果没有,说明可能是单身狗, 就把这个

顾客放到单身狗容器ds里,如果检索到,说明是一对couple来到了party就将 顾客的老伴删掉。直到最后输入完,ds里的存的就是单身狗,排个序输出就行了

例如:

拿上面例子来说,当输入顾客55555是,ds为空,直接插入,输入44444时,ds里没有44444的老伴(虽然他有老伴,但目前已经检索的名单中没有出现),所以插入,输入10000 88888 22222ds里没有他们的老伴都插入,当输入11111时,在ds里检索到22222,11111和22222是couple,所以就把ds里的22222删掉,11111不插入ds,往后23333插入,输入完成后ds里有数55555 44444 10000 88888 23333,再排个序就行了。

#include <iostream> #include <vector>#include <map> #include <algorithm>  using namespace std;  map<int,int>M;vector<int> ds;bool Iscouple(int start,int end,int x)//检索顾客的老伴是否在ds里{for(int i=start;i<end;i++)if(ds[i]==x)return true;return false;}int main() {     int n,m,cp1,cp2,guest;   cin>>n;   for(int i=0;i<n;i++)   {   cin>>cp1>>cp2;M[cp1]=cp2;M[cp2]=cp1;}cin>>m;for(int i=0;i<m;i++){cin>>guest;if(!Iscouple(0,ds.size(),M[guest]))//如果顾客的老伴不在ds里,就把顾客加入单身狗名单ds.push_back(guest);elseds.erase(find(ds.begin(),ds.end(),M[guest]));//如果在,把这个顾客的老伴从ds中删除}sort(ds.begin(),ds.end());//排个序cout<<ds.size()<<endl;for(int i=0;i<ds.size();i++){if(i==0)printf("%05d",ds[i]);//注意最后不够5位要补0elseprintf(" %05d",ds[i]);}    return 0;  }  




0 0
原创粉丝点击