产生冠军(set,map,拓扑结构三种方法)
产生冠军
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10983 Accepted Submission(s): 5088
球赛的规则如下:
如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。
如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。
根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。
#include<cstdio>
#include<iostream>
#include<string>
#include<set>
using namespace std;
int main(){int n;string a,b;
while(scanf("%d",&n),n){
set<string>tot;
set<string>looser;
while(n--)cin>>a>>b,tot.insert(a),tot.insert(b),looser.insert(b);
if(tot.size()-looser.size()==)puts("Yes");
else puts("No");
}
return ;
}
map题解:胜利的每次+1,失败的直接赋值无穷小;最后判断为正的个数是否为一;
代码:
#include<iostream>
#include<map>
#include<string>
#define INF -0xffff
using namespace std;
int main(){
map<string,int>player;//注意由于下面是player[a],a,b是字符串,所以string在前;
map<string,int>::iterator iter;//
string a,b;int n,flot;
while(scanf("%d",&n),n){player.clear();flot=;
while(n--)cin>>a>>b,player[a]++,player[b]=INF;
for(iter=player.begin();iter!=player.end();iter++){
if(iter->second>=)flot++;
}
if(flot==)puts("Yes");
else puts("No");
}
return ;
}
拓扑结构+邻接表:
#include<string.h>
#include<queue>
#include<map>
#include<string>
#include<stdio.h>
using namespace std;
const int MAXN=;
int que[MAXN];
struct Node{
int to,next;
};
Node edg[MAXN];
int head[MAXN];
map<string,int>mp;
int k;
priority_queue<int,vector<int>,greater<int> >dl;
void topu(){
for(int i=;i<k;i++){
if(!que[i])dl.push(i);
}
if(dl.size()==)puts("Yes");
else puts("No");
}
void initial(){
memset(head,-,sizeof(head));
memset(que,,sizeof(que));
mp.clear();
while(!dl.empty())dl.pop();
k=;
}
int main(){
int n;
char s1[],s2[];
while(~scanf("%d",&n),n){
initial();
for(int i=;i<n;i++){
scanf("%s%s",s1,s2);
if(!mp.count(s1))mp[s1]=k++;
if(!mp.count(s2))mp[s2]=k++;
edg[i].to=mp[s2];
edg[i].next=head[mp[s1]];
head[mp[s1]]=i;
que[mp[s2]]++;
}
topu();
}
return ;
}
产生冠军(set,map,拓扑结构三种方法)的更多相关文章
- Java原来如此-遍历Map的三种方法
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; pub ...
- 【Golang 接口自动化07】struct转map的三种方式
背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法,为后续做铺垫. struct转map ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...
- 两个Map的对比,三种方法,将对比结果写入文件。
三种方法的思维都是遍历一个map的Key,然后2个Map分别取这2个Key值所得到的Value. #第一种用entry private void compareMap(Map<String, S ...
- map的三种遍历方法!
map的三种遍历方法! 集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ /* * To change this template, choose Tools | Te ...
- Spring使用jdbcJdbcTemplate和三种方法配置数据源
三种方法配置数据源 1.需要引入jar包:spring-jdbc-4.3.2.RELEASE.jar <!-- spring内置,springJdbc,配置数据源 --> <bean ...
- Map的三种遍历方式
对于Map的三种方式遍历 1.keySet() 2.values() 3.entrySet()三种方式得到Set之后,都可以使用 foreach或者iterator, 不能使用for,因为数据结构决定 ...
- 转载:遍历Map的四种方法
http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
随机推荐
- Jquery_Ajax文件上传
如何实现jQuery的Ajax文件上传,PHP如实文件上传.AJAX上传文件,PHP上传文件. [PHP文件上传] 在开始之前,我觉得是有必要把通WEB上传文件的原理简单说一下的.实际上,在这里不管是 ...
- jQuery插件Jeditable的使用(Struts2处理)
Jeditable - Edit In Place Plugin For jQuery,是一款JQuery就地编辑插件.也就是在页面直接点击需要编辑的内容,就会自动变成文本框进行编辑.它的官方 ...
- Duanxx的STM32学习: STM32的存储映射
- 定制Qt帮助系统
楼主 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 一个完善的应用程序应该提供尽可能丰富的帮助信息.在Qt ...
- Oracle安装基本步骤
安装数据库 .建立用户组及用户 groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba oracle passw ...
- SQL内连接-外连接join,left join,right join,full join
1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...
- ToggleButton --------- 按钮实现开关效果
ToggleButton(开关按钮)是Android系统中比较简单的一个组件,是一个具有选中和未选择状态双状态的按钮,并且需要为不同的状态设置不同的显示文本 ,默认状态下 关. ToggleButto ...
- sqlite3---代码操作
1.创建数据库 NSString * docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainM ...
- leetcode_最长公共前缀
题目:Write a function to find the longest common prefix string amongst an array of strings. 题解:给出的函数为: ...
- linux命令--virtualenv
virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持环境的干净,解决包冲突问题. 一.安装virtualenv virtualenv实际上是一个pyth ...