链接:https://codeforces.com/problemset/problem/1169/B
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&nbs***bsp;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&nbs***bsp;yy. Otherwise, print "NO". You can print each letter in any case (upper or lower).
Examples
input
Copy
4 6 1 2 1 3 1 4 2 3 2 4 3 4
output
Copy
NO
input
Copy
5 4 1 2 2 3 3 4 4 5
output
Copy
YES
input
Copy
300000 5 1 2 1 2 1 2 1 2 1 2
output
Copy
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.
代码:
#include <bits/stdc++.h>
using namespace std;
long long t,n,m,k,s=0,x,y,p,q,max1=0,c,d;
long long a[1000001],b[1000001],vis[1000001]={0};
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i]>>b[i];
}
x=a[1],y=b[1];
int fl=0;
for(int i=2;i<=m;i++)
{
if(a[i]!=x&&b[i]!=y&&a[i]!=y&&b[i]!=x)
{
p=a[i];
q=b[i];
fl=1;
break;
}
}
if(fl==1)
c=x,d=p;
else
{
cout<<"YES";
return 0;
}
int flag=0;
for(int i=1;i<=m;i++)
{
if(a[i]==c||b[i]==c||a[i]==d||b[i]==d)
{
continue;
}
else
{
flag=1;
break;
}
}
if(flag==0)
cout<<"YES";
else
{
c=x,d=q;
flag=0;
for(int i=1;i<=m;i++)
{
if(a[i]==c||b[i]==c||a[i]==d||b[i]==d)
{
continue;
}
else
{
flag=1;
break;
}
}
if(flag==0)
cout<<"YES";
else
{
c=y,d=q;
flag=0;
for(int i=1;i<=m;i++)
{
if(a[i]==c||b[i]==c||a[i]==d||b[i]==d)
{
continue;
}
else
{
flag=1;
break;
}
}
if(flag==0)
cout<<"YES";
else
{
c=y,d=p;
flag=0;
for(int i=1;i<=m;i++)
{
if(a[i]==c||b[i]==c||a[i]==d||b[i]==d)
{
continue;
}
else
{
flag=1;
break;
}
}
if(flag==0)
cout<<"YES";
else
cout<<"NO";
}
}
}
}