5777. 【NOIP2008模拟】小x玩游戏 
(File IO): input:game.in output:game.out

Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits  

Goto ProblemSet

Description

        今天,小x因为太无聊,就在玩游戏。这个游戏有两个队伍,然后他们在游戏里面打来打去。
       但小x遇到了难题。他不知道自己的队友是谁。他只知道总共有两个队伍,每队有n个人和很多组击杀情况。他想问你,现在他能否知道两个队伍分别有谁。你可以帮助小x吗?由于小x是个游戏狂魔,所以他玩了很多局游戏。

 

Input

       第一行有一个t,表示小y共玩了t局游戏。
        接下来有t组数据,每组数据第一行有一个n,m,表示每队有n个人,有m组击杀情况,接下来m行每行两个字符串s1,s2,表示s1杀了s2,其中s1,s2的长度均不超过10(数据保证两个字符串都由小写字母组成)。注意一个人可以被击杀多次、一个人可以被曾经杀死过的人给杀死。
 

Output

​总共有t行,每行一个“YES”或“NO”,YES表示符合题目条件,NO表示不符合。
 

Sample Input

1
2 3
a b
c d
a d  

Sample Output

 YES

​样例解释:
a,c是一队,b,d是一队。

Data Constraint

数据范围:
对于30%的数据,n<=1000,m<=10000;
对于100%的数据,t<=10,n<=2000,m<=100000。
数据保证不会有矛盾的关系。
 
做法:数据保证不矛盾就很好写啦╭(╯^╰)╮,并查集啊dfs啊随便搞搞,然后字符串hash一下就好啦
 #include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#define MO 10000000009
#define mo 233437
#define LL long long
using namespace std;
LL t, n, m, ls[mo + ], tot, cnt, A, B;
struct arr
{
int to, next;
}e[mo];
string st;
bool b[mo + ];
LL h[mo + ];
LL H[]; void Add(int x, int y)
{
e[++cnt].to = y;
e[cnt].next = ls[x];
ls[x] = cnt;
} LL Hash(LL p)
{
int g = p % mo;
for (; h[g] != && h[g] != p; g = (g + ) % mo);
return g;
} void Init()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= m; i++)
{
cin >> st;
LL u = , v = , t1, t2;
memset(H, , sizeof(H));
for (int i = ; i < st.size(); i++)
H[i + ] = ((H[i] + st[i] - 'a' + ) * ) % MO;
u = H[st.size()];
v = Hash(u);
h[v] = u;
t1 = v;
memset(H, , sizeof(H));
cin >> st;
for (int i = ; i < st.size(); i++)
H[i + ] = ((H[i] + st[i] - 'a' + ) * ) % MO;
u = H[st.size()];
v = Hash(u);
h[v] = u;
t2 = v;
Add(t1, t2);
Add(t2, t1);
}
} void Dfs(int x, int D)
{
if (D) A++;
else B++;
for (int i = ls[x]; i; i = e[i].next)
{
if (b[e[i].to]) continue;
b[e[i].to] = ;
Dfs(e[i].to, D ^ );
}
} void Work()
{
A = , B = ;
int j = ;
while (!h[j]) j++;
b[j] = ;
Dfs(j, );
if ((A & B & n) == n)
{
printf("YES\n");
return;
}
printf("NO\n");
return;
} int main()
{
freopen("game.in", "r", stdin);
freopen("game.out", "w", stdout);
scanf("%d", &t);
for (; t; t--)
{
memset(ls, , sizeof(ls));
memset(e, , sizeof(e));
memset(b, , sizeof(b));
memset(h, , sizeof(h));
cnt = ;
Init();
Work();
}
}

JZOJ 5777. 【NOIP2008模拟】小x玩游戏的更多相关文章

  1. 2783: 【基础】小 X 玩游戏(game)

    2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听 ...

  2. P5676 [GZOI2017]小z玩游戏【Tarjan】

    小z玩游戏 Tarjan算是板子题吧,但是要稍微做一些修改,建边需要多考虑,建立"虚点". 题目描述 小 z 很无聊. 小 z 要玩游戏. 小 z 有\(N\)个新游戏,第\(i\ ...

  3. P5676 [GZOI2017]小z玩游戏 Tarjan+优化建图

    题目描述 分析 一开始看到这道题,首先想到的就是建好边后跑一个Tarjan缩点,将siz大于1的节点统计一下,输出结果 Tarjan非常显然易得,关键就是怎么建边 比较好想的一种思路就是枚举每一个兴奋 ...

  4. 【题解】 [GZOI2017]小z玩游戏

    题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到 ...

  5. SCUT - 131 - 小P玩游戏II - 贪心 - 平衡树

    https://scut.online/p/131 首先假如钦定了一群人去打怪兽,那么可以把主要的任务都丢给b最大的人去打,这样不会更差.然后考虑枚举这个b最大的人,其他人陪练.一开始就是ai+k*b ...

  6. 神奇的建图方式(Tarjan)——小z玩游戏

    原题来自与:洛谷 P5676(GZOI2017)  链接: https://www.luogu.com.cn/problem/P5676 题面: 题意比较明显,如果已经建好了边,那么跑个Tarjan ...

  7. J - 玩游戏

    小A和小B玩游戏,初始的时候小A给小B一组包含n个数的数组.他们按如下的规则进行: 每次小B得到一组数,他把这组数的和加到自己的分数里面(他的初始分数是0),然后他把这组数还给小A. 如果小A得到的这 ...

  8. JZOJ 5793. 【NOIP2008模拟】小S练跑步

    5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms  Memory Limits:  ...

  9. JZOJ 5776. 【NOIP2008模拟】小x游世界树

    5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms  Me ...

随机推荐

  1. Linux利用iptables实现真-全局代理

    对于经常要浏览油管等被墙网站的人而言,利用代理来实现fq是非常有必要的.现在fq的方法中,最为主流的应该要数ssr了,因此本教程都是基于ssr的socks5代理而言的. 在windows中,ssr客户 ...

  2. client的使用

    document.documentElement.clientHeight = 464 // 指窗口的可见高度的大小 document.body.clientHeight = 1577 // 指窗口的 ...

  3. 妙用Object

    妙用Object 当你在写C#程序时,经常会用到“ToString()”这个方法,而且如果你细心你点就会发现所有的引用类型都含有“ToString()”这个方法,那么你知道为什么会这样吗?很简单,因为 ...

  4. CI框架更新与删除

    $this->load->database();        // $query=$this->db->get('t_repayments');        // $res ...

  5. 解决Maven依赖下载不全的问题

    背景描述 在日常学习过程中使用Maven构建SpringBoot+SpringCloud服务时,有时会使用非正式版的SpringBoot和SpringCloud(非正式版是指不是最终发布的版本,而是测 ...

  6. Mavlink 协议 理解

    来源:blog.csdn.net/super_mice/article/details/44836585 之前看了mavlink协议,网上关于mavlink的资料不多.本文大概总结了下对mavlink ...

  7. strlen()与mb_strlen()的作用分别是什么

    strlen和mb_strlen都是用于截取字符串的,其中strlen只针对单字节编码字符 如果是多字节编码字符 如gbk和utf8 使用strlen会出现乱码 此时可以使用mb_strlen(),专 ...

  8. python基础-字符串操作

    输出高亮 语法:   显示方式.前景色.背景色至少一个存在即可. 显示方式:0(关闭所有效果),1(高亮),4(下划线),5(闪烁),7(反色),8(不可见). 前景色以3开头,背景色以4开头,具体颜 ...

  9. zabbix-3.4 触发器

    3 触发器 概述 触发器是"评估"由项目采集的数据并表示当前系统状况的逻辑表达式. 当监控项用于采集系统的数据时,始终遵循这些数据是非常不切合实际的,因为这些数据始终在等待一个令人 ...

  10. 使用后台程序的第一个表单Form

    参考手册:http://www.yiichina.com/doc/guide/2.0/start-forms 1.创建模型:advanced\backend\models\moxing.php 此模型 ...