传送门

Toad Ivan has mm pairs of integers, each integer is between 11 and nn, inclusive. The pairs are (a1,b1),(a2,b2),…,(am,bm)(a1,b1),(a2,b2),…,(am,bm).

He asks you to check if there exist two integers xx and yy (1≤x<y≤n1≤x<y≤n) such that in each given pair at least one integer is equal to xx or yy.

Input

The first line contains two space-separated integers nn and mm (2≤n≤3000002≤n≤300000, 1≤m≤3000001≤m≤300000) — the upper bound on the values of integers in the pairs, and the number of given pairs.

The next mm lines contain two integers each, the ii-th of them contains two space-separated integers aiai and bibi (1≤ai,bi≤n,ai≠bi1≤ai,bi≤n,ai≠bi) — the integers in the ii-th pair.

Output

Output "YES" if there exist two integers xx and yy (1≤x<y≤n1≤x<y≤n) such that in each given pair at least one integer is equal to xx or yy. Otherwise, print "NO". You can print each letter in any case (upper or lower).

Examples

Input

4 6
1 2
1 3
1 4
2 3
2 4
3 4

Output

NO

Input

5 4
1 2
2 3
3 4
4 5

Output

YES

Input

300000 5
1 2
1 2
1 2
1 2
1 2

Output

YES

Note

In the first example, you can't choose any xx, yy because for each such pair you can find a given pair where both numbers are different from chosen integers.

In the second example, you can choose x=2x=2 and y=4y=4.

In the third example, you can choose x=1x=1 and y=2y=2.

题意:给你m组数,每组两个。问你是否能找到两个数,使得这m组数中每组至少含有这两个数中的一个。

思路:如果能找到这样的两个数<x,y>,那第一组<t1,t2>中必然含有其中一个数x。这个数有可能是t1,也有可能是t2。

遍历寻找这m组中和第一组完全不同的一组<t3,t4>。如果能找到满足题意的两个数,那这一组中必然含有另外那个数y。如果找不到,直接输出YES。

至于x是<t1,t2>中的哪一个,y是<t3,t4>中的哪一个,现在还不能确定,但是我们可以遍历寻找。现在可能的情况有<t1,t3>是<x,y>、<t1,t4>是<x,y>、<t2,t3>是<x,y>、<t2,t4>是<x,y>,<x,y>必然只有唯一的一组,所以我们把每一种情况代入检查一下就行了,如果这四种情况中有满足题意的,就输出YES,否则输出NO。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <vector>
#include <queue>
#include <map>
#include <string>using namespace std;typedef long long ll;
const int maxn=3e5+7;int n,m;
pair<int,int> p[maxn];bool check(int a,int b)
{for(int i=0;i<m;i++){if(p[i].first!=a&&p[i].first!=b&&p[i].second!=a&&p[i].second!=b)return 0;}return 1;
}int main()
{cin>>n>>m;for(int i=0;i<m;i++) cin>>p[i].first>>p[i].second;int t1=p[0].first,t2=p[0].second,t3,t4;int flag1=0;//判断是否有与第一对完全不同的组合 for(int i=1;i<m;i++){if(p[i].first!=t1&&p[i].first!=t2&&p[i].second!=t1&&p[i].second!=t2){flag1=1;t3=p[i].first,t4=p[i].second;break;}}if(!flag1) cout<<"YES"<<endl;else {if(check(t1,t3)||check(t1,t4)||check(t2,t3)||check(t2,t4)) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

写代码的时候因为main函数和check函数中的变量重了,导致多花了好长时间,以后切记注意变量的范围,尽量让变量不要重复。

不要把无所谓的事放在心上,如果好像做得不是很好,那也不要在意,下次注意些就行了。怎样做,下次才能做好呢?答案是做好当下正在做的事,因为你无法跳出当下去做未来的事,顺其自然才是最好的选择,过去的事就让它随风飘散吧。

Pairs(暴力,超详细简单)相关推荐

  1. 教你快速入门ElasticSearch,超详细简单~

    教你快速入门ElasticSearch,超详细简单~ 一. 初探ElasticSearch 1.1 什么是ElasticSearch? ElasticSearch,简称为ES,它是一个开源的高扩展的分 ...

  2. VuePress超详细简单教程

    1)VuePress是什么? 先让我们看看 VuePress能干什么?有什么效果? image.png 很像vue官网的文档页面,因为vuePress就是尤大大的一个力作 vuePress官网介绍介绍 ...

  3. vuepress文档服务器,VuePress超详细简单教程

    1)VuePress是什么? 先让我们看看 VuePress能干什么?有什么效果? image.png 很像vue官网的文档页面,因为vuePress就是尤大大的一个力作 vuePress官网介绍介绍 ...

  4. vue vuex vue-router后台项目——权限路由(超详细简单版)

    项目地址:vue-simple-template 共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 bl ...

  5. 超详细简单解决git的上传和下载

    Git 背景 Git的作用 下载git教程 安装注意事项 创建github账号及创建仓库和上传项目 下载项目到本地 背景 GIT,全称是分布式版本控制系统,git通常在编程中会用到,并且git支持分布 ...

  6. Mysql8.0.17压缩包安装——超详细简单教程

    一.Mysql下载 压缩包下载:https://dev.mysql.com/downloads/mysql/ MSI下载:https://dev.mysql.com/downloads/windows ...

  7. 字符串的定义及其具体使用 超详细 简单易懂

    一字符串的定义 字符串就是一串字符,表示的是文本的数据类型 注意字符串也是有序序列哦 二字符串的定义方式 字符串可以用一对双引号或单引号来定义,但是我们一般采用双引号的方式来定义字符串. 注意:如果在 ...

  8. 超详细,简单用socket建立客户端与服务端之间的通信

    socket,一种通用的网络编程接口,它是一个特殊的文件描述符. 有三种类型: 接流式套接字(SOCK_STREAM):提供了一个面向连接.可靠的数据传输服务,数据无差错.无重复的发送且按发送顺序接收 ...

  9. 全局变量和局部变量的理解及注意事项 超详细 简单易懂

    一全局变量和局部变量 (1)全局变量和局部变量的含义: 在函数体内部定义的变量叫做局部变量,在函数体外部定义的变量叫做全局变量.局部变脸只能在定义的那个函数体的内部进行使用,而全局变量在所有函数内部都 ...

最新文章

  1. cjson 对象是json数组型结构体_cJSON创建并解析json结构体 | 学步园
  2. qq邮箱使用技巧学习1
  3. 医疗:ICU(10)
  4. c++图的创建_「PS抠图系列13」通道混合器
  5. 点击文本框内容消失,移开内容自动显示(两种方法)(原创)
  6. spring如何实现注入
  7. Redis容量及使用规划(转)
  8. Atitti 存储引擎支持的国内点与特性attilax总结
  9. 【CVPR2020】计算机视觉与模式识别会议论文完全清单_Part2
  10. 使用Kubuntu运行命令对话框(Alt + F2)
  11. 【复盘】如何写一份教程?
  12. 在Cadence的PCB工程中直接修改替换元件封装
  13. 国内哪个域名注册商比较好?怎样选择域名注册商?
  14. c# aspx转为html,asp.net(c#)网页跳转七种方法小结
  15. error_code: 此条为不计费广告,正常投放请联
  16. Java生成条形码(亲测可通过扫码枪扫出)
  17. 智能密码钥匙开发、USBKEY开发、智能卡开发、COS开发、CSP开发
  18. 付费系列 3 - 单障碍和单触碰期权 PDE 有限差分
  19. 科技给生活带来的变化,科技发展有哪些好处
  20. 升级鸿蒙系统详细教程,华为鸿蒙系统怎么升级 鸿蒙系统升级方法步骤

热门文章

  1. crh寄存器_STM32 学习笔记(寄存器)---2
  2. 近期FTDI的FT232RL杀疯了,给大家介绍一款国产替代P TO P的高性能GR232RL
  3. 外贸群发邮箱如何选择
  4. charles证书过期如何处理
  5. python中description_python中cursor.description什么意思
  6. 4h上手C++版Opencv
  7. 微信小程序之数独挑战九宫格
  8. CY系列菁染料CY3、CY5、CY5.5、CY7、CY7.5修饰标记泛素Ubiquitin Rhodamine(Ub)
  9. 神气的 iOS 打包
  10. 《计算机视觉与图像处理》最全总结之就业必备-小白易懂易上手