代码:
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n;
int a[N],b[N],t[10005];
inline int read()
{
int s=1,x=0;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')s=0;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-48;c=getchar();}
return s?x:-x;
}
int main()
{
// freopen("game.in","r",stdin);
// freopen("game.out","w",stdout);
n=read();
int minn=min(n,10000);
for(int i=1;i<=n;i++)
{
a[i]=read(),b[i]=read();
if(a[i]>b[i]) swap(a[i],b[i]);
if(a[i]<=minn && b[i]>minn) t[a[i]]++;
else if(a[i]>minn && b[i]>minn) minn--;
else if(a[i]==b[i]) t[a[i]]++;
}
for(int i=1;i<=n;i++)
{
if(t[a[i]]==0 || b[i]>minn || t[b[i]]) t[a[i]]++;
else t[b[i]]++;
}
// cout<<minn<<endl;
for(int i=1;i<=minn;i++)
{
if(!t[i])
{
printf("%d\n",i-1);
return 0;
}
}
printf("%d\n",minn);
return 0;
}
hack数据:
4
1 4
1 2
2 3
3 5
正解应该输出4,但上面的程序输出3