描述

H国编程联赛中有N只队伍,编号1~N。 他们计划在2018年一共进行M场一(队)对一(队)的比赛。

为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天。也就是如果A队1月1日参加了一场比赛,那么下一场比赛最早安排在1月3日。

给定M场比赛的时间和参赛的两支队伍,请你判断这个日程安排是否可行。

输入

第一行包含一个整数T,代表测试数据组数。(1 ≤ T ≤ 10)

对于每组数据,第一行包含两个整数N和M。(1 ≤ N ≤ 50, 1 ≤ M ≤ 1000)

以下M行每行描述一场比赛,包含比赛日期(格式MM-DD),以及2支参赛队伍的编号。

输出

对于每组数据输出YES或者NO,代表日程安排是否可行。

样例输入

2
3 3
01-01 1 2
01-03 1 3
01-05 2 3
4 4
02-01 4 3
01-30 4 1
01-31 1 2
01-30 2 3

样例输出

YES
NO

模拟即可。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int d[]={,,,,,,,,,,,,};
int a[][];
int main()
{
int T,n,m,i,j,x,y,date,mon,day;bool Flag;
scanf("%d",&T);
while(T--){
Flag=true;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++) a[i][]=;
for(i=;i<=m;i++) {
scanf("%d-%d%d%d",&mon,&day,&x,&y);
date=;
for(j=;j<mon;j++) date+=d[j];
date+=day;
a[x][++a[x][]]=date;
a[y][++a[y][]]=date;
}
for(i=;i<=n;i++) sort(a[i]+,a[i]+a[i][]+);
for(i=;i<=n;i++)
for(j=;j<=a[i][];j++)
if(a[i][j]-a[i][j-]<) Flag=false;
if(Flag) printf("YES\n");
else printf("NO\n");
}
}

最新文章

  1. 对git的理解及常用指令
  2. 通过setDB2Client*来方便的使用TRACE调优jdbc程序
  3. 真人动作捕捉系统 for Unity
  4. 如何手动修改XP系统属性中的技术支持信息
  5. jQuery基础之让出$,与其他库共存
  6. [美]莫提默 J. 艾德勒《如何阅读一本书》
  7. 使用升级版的 Bootstrap typeahead v1.2.2
  8. unity, 颜色随高度渐变shader
  9. Java怎样高速构造JSON字符串
  10. 关系数据库的基本概念和MySQL说明
  11. shell变量赋值进阶
  12. 获取usb设备父系或子代
  13. linux学习笔记:1.基础知识和命令行基本操作
  14. Linux 安装nodejs环境以及路径配置
  15. Leetcode_107_Binary Tree Level Order Traversal II
  16. jquery 操作服务端控件,select 控件
  17. LeetCode算法题-Diameter of Binary Tree(Java实现)
  18. Excel文件上传功能实现
  19. python金融反欺诈-项目实战
  20. 构造方法 this super

热门文章

  1. lambda表达式转换sql
  2. 集团管控的历史读本——Leo鉴书76
  3. 解决Linux中文环境下astro和Calibre不能输入的问题
  4. 怎样推断 ios设备的类型(iphone,ipod,ipad)
  5. 底部TabsFooter
  6. MySQL -- Ubuntu下的操作命令
  7. C#抓取网面上的html内容(JS动态生成的无法抓取)
  8. 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
  9. Upgrading Elasticsearch
  10. mysqldump的--master-data参数