姓名与ID(codevs 1027 未结题)
题目描述 Description
有N个人,各自有一个姓名和ID(别名)。每个人的姓名和ID都没有重复。这些人依次进入一间房间,然后可能会离开。过程中可以得到一些信息,告知在房间里的某个人的ID。你的任务是准确地确定每个人的ID。
输入描述 Input Description
第一行是整数N,表示N个人,N<=20。
接下来的一行是N个人的ID,用一个空格分隔。
接下来的若干行是过程的记录:一个字母和一个字符串。字母是E、L或M中的一个。E表示进入房间,后面跟的字符串表示进来的人的姓名;L表示离开房间,后面跟的字符串表示离开的人的姓名;M表示回答询问,后面跟的字符串表示:当前用这个ID人在房间里面。
最后一行Q表示结束。
所有的姓名和ID都由不超过20个的小写字母组成。所有姓名都会在记录中出现。
一开始时,房间时空的。
输出描述 Output Description
共N行,每行形如:“姓名:ID”,如果ID不能确定,输出???。
按照姓名的字典顺序输出。
样例输入 Sample Input
7
bigman mangler sinbad fatman bigcheese frenchie capodicapo
E mugsy
E knuckles
M bigman
M mangler
L mugsy
E clyde
E bonnie
M bigman
M fatman
M frenchie
L clyde
M fatman
E ugati
M sinbad
E moriarty
E booth
Q
样例输出 Sample Output
bonnie:fatman
booth:???
clyde:frenchie
knuckles:bigman
moriarty:???
mugsy:mangler
ugati:sinbad
/*
匈牙利算法+map预处理,WA 80分,目前还没找出错误来
*/
#include<cstdio>
#include<iostream>
#include<map>
#include<cstring>
#include<algorithm>
#define M 30
using namespace std;
map<string,int> id;
map<string,int> mz;
int in_mz[M],n,cnt;
int used[M],belong[M],a[M][M],be2[M];
string idd[M],mzz[M];
struct node
{
int ID,MZ;
};node ans[M];
bool find(int i)
{
for(int j=;j<=n;j++)//循环姓名
if(!used[j]&&a[i][j])
{
used[j]=;
if(!belong[j]||find(belong[j]))
{
belong[j]=i;
return true;
}
}
return false;
}
bool cmp(const node&x,const node&y)
{
return mzz[x.MZ]<mzz[y.MZ];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
a[i][j]=;
for(int i=;i<=n;i++)
{
string s;cin>>s;
id[s]=i;
idd[i]=s;
}
while()
{
char c;cin>>c;
if(c=='Q')break;
if(c=='E')
{
string s;cin>>s;
if(!mz[s])
{
mz[s]=++cnt;
mzz[cnt]=s;
}
in_mz[mz[s]]=;
}
if(c=='L')
{
string s;cin>>s;
in_mz[mz[s]]=;
}
if(c=='M')
{
string s;cin>>s;int num=id[s];
for(int i=;i<=n;i++)
if(!in_mz[i])a[num][i]=;
}
}
for(int i=;i<=n;i++)//循环ID
if(find(i))
memset(used,,sizeof(used));
for(int i=;i<=n;i++)be2[belong[i]]=i;
for(int i=;i<=n;i++)//循环ID
{
memset(used,,sizeof(used));
a[i][be2[i]]=;
belong[be2[i]]=;
if(!find(i))
ans[i].MZ=be2[i],ans[i].ID=i;
else
ans[i].MZ=be2[i],ans[i].ID=;
a[i][be2[i]]=;
belong[be2[i]]=i;
}
sort(ans+,ans+n+,cmp);
idd[]="???";
for(int i=;i<=n;i++)
cout<<mzz[ans[i].MZ]<<":"<<idd[ans[i].ID]<<endl;
return ;
}
姓名与ID(codevs 1027 未结题)的更多相关文章
- 1027 姓名与ID[二分图匹配(匈牙利)]
1027 姓名与ID 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 有N个人,各自有一 ...
- 《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告
<基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方 ...
- 《基于Arm实验箱的国密算法应用》课程设计 结题报告
<基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...
- [codevs1027]姓名与ID
[codevs1027]姓名与ID 试题描述 有N个人,各自有一个姓名和ID(别名).每个人的姓名和ID都没有重复.这些人依次进入一间房间,然后可能会离开.过程中可以得到一些信息,告知在房间里的某个人 ...
- uva401 - Palindromes结题报告
题目地址 : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- PyQt专题结题感言
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 今天写完PyQt专题显示部件的最后一篇文章,长长的 ...
- codevs 1027 姓名与ID
/* 二分图匹配 建图稍麻烦点 不过 有STL大法带我上天 说正经的 先假设都有关系 然后把确定的没有关系的删掉 这样跑出来的一定是完美匹配 至于确定的匹配嘛 删掉这一条 不再是完美匹配 然后记下排序 ...
- 大搜车知乎live中的面试题结题方法记录
1.HTML&CSS(分别10分) 1. 一个div,宽度是100px,此时设置padding是20px,添加一个什么css属性可以让div的实际宽度仍然保持在100px,而不是140px? ...
随机推荐
- 准确计算CoreText高度的方法:
- (int)getAttributedStringHeightWithString:(NSAttributedString *) string WidthValue:(int) width { ; ...
- shell 调试 2例
1.############# #!/bin/ksh if [ ! -z $TNS_ADMIN ]; then export TNS_ADMIN=`dirname $TNS_ADMIN` ...
- zojDakar Rally(01背包)
01背包 加上每次更新解题数目最多 总用时最少 因为要保证用时最少,要先把时长由小到大排序. 没排序 WA了几小时..链接 #include <iostream> #include< ...
- Uncaught TypeError: Cannot set property 'f7View' of undefined 错误原因
// 添加视图var mainView = myApp.addView('.view-main', { // 因为我们要用动态的导航栏,我们需要使它的这一观点: dynamicNavbar: true ...
- IO流的原理和概念
在程序中如何读写文件?不同的编程语言有不同的方式,而 JAVA 则提出了“流”的概念,通过“流”来读写文件 什么是流: 流(Stream)是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通 ...
- T4870 水灾(sliker.cpp/c/pas) 1000MS 64MB
题目描述 大雨应经下了几天雨,却还是没有停的样子.土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没. CCY所在的城市可以用一个N*M(N,M<=50)的地图表 ...
- spark shuffle参数及调优建议(转)
原文:http://www.cnblogs.com/arachis/p/Spark_Shuffle.html spark.shuffle.file.buffer 默认值:32k 参数说明:该参数用于设 ...
- ijkplayer seekTo回跳以前从指定位置播放解决办法
相信在使用ijkplayer播放视频时候,大部分情况会遇到SEEKTO的问题,就是拖动后,不会从拖动结束的位置播放,而是大部分拖动后,会回跳一段时间,甚至从头开始播放. 官方称这 是正常的,因为视频拖 ...
- 经典算法mark
在平时找工作的时候,或多或少会遇到一些算法问题,很多都是比较经典或者网上已经流传很久的.只是我们没有接触过,所以不知道怎么解决. 在这儿,我自己总结一些我遇到的一些经典算法,给自己增加一点记忆,也给需 ...
- log4net小记
log4net添加: Install-Package Log4net log4net.config配置: <?xml version="1.0" encoding=" ...