Advertisement
yicongli

CF1041E

Jan 21st, 2021 (edited)
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define gc c=getchar()
  6. #define r(x) read(x)
  7. #define ll long long
  8.  
  9. template<typename T>
  10. inline void read(T&x){
  11.     x=0;T k=1;char gc;
  12.     while(!isdigit(c)){if(c=='-')k=-1;gc;}
  13.     while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
  14. }
  15.  
  16. const int N=1e3+7;
  17.  
  18. int a[N];
  19. int ans[N];
  20. bool vis[N];
  21.  
  22. int main(){
  23.     // freopen(".in","r",stdin);
  24.     // freopen(".out","w",stdout);
  25.     int n;r(n);
  26.     for(int i=1;i<n;++i){
  27.         int u,v;r(u),r(v);
  28.         if(u!=n && v!=n)return puts("NO"),0;
  29.         if(u==v)return puts("NO"),0;
  30.         if(u==n)swap(u,v);
  31.         a[i]=u;
  32.     }
  33.     sort(a+1,a+n);
  34.     for(int i=1;i<n;++i){
  35.         if(a[i]<i)return puts("NO"),0;
  36.     }
  37.     for(int i=1;i<n;++i){
  38.         if(a[i]!=a[i-1])ans[i]=a[i],vis[a[i]]=1;
  39.         else {
  40.             for(int j=1;j<=a[i];++j){
  41.                 if(!vis[j]){
  42.                     ans[i]=j;
  43.                     vis[j]=1;
  44.                     break;
  45.                 }
  46.             }
  47.         }
  48.     }
  49.     puts("YES");
  50.     ans[n]=n;
  51.     for(int i=1;i<n;++i){
  52.         printf("%d %d\n",ans[i],ans[i+1]);
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement