产生冠军(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 ...
随机推荐
- 用WIFI为什么连不上VPN
因为是做服务器的,经常需要通过VPN连接到公司的服务器处理一些事件. 但最近一次在寝室通过WIFI连接VPN时却报“错误 619:不能建立到远程计算机的连接,因用于此端口的连接已关闭”.我的第一反应是 ...
- python高级编程之元类(第3部分结束)
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #元编程 #new-style类带来了一种能力,通过2个特殊方法(_ ...
- asp.net 追加文本(追加写入记事本)
代码: string path = Server.MapPath("/Log/Log.txt"); if (File.Exists(path)) { using (StreamWr ...
- java final 和instanceof 关键字
/* final class A { public final void eat(){ System.out.println("测试"); } } */ class A { } c ...
- UIProgressView 圆角
里面外面都变成圆角 不用图片 直接改变layer 重点是里面外面都是圆角哦 for (UIImageView * imageview in self.progress.subviews) { imag ...
- (原)使用intel的ipp库计算卷积及相关
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462631.html 参考网址: https://software.intel.com/zh-cn/n ...
- oracle之Flash Recovery Area全面介绍 (转载)
1. 设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的 ...
- 实现TCP断点上传,后台C#服务实现接收
实现TCP断点上传,后台C#服务实现接收 终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现, ...
- 【iOS开发】collectionView 瀑布流实现
一.效果展示 二.思路分析 1> 布局的基本流程 当设置好collectionView的布局方式之后(UICollectionViewFlowLayout),当系统开始布局的时候,会调用 pre ...
- Keil C -WARNING L15: MULTIPLE CALL TO SEGMENT
1.第一种错误信息 ***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1 CALLER1: ...