Submission #1354513

#TimeUsernameProblemLanguageResultExecution timeMemory
1354513hsuan._.0528Sopsug (EGOI23_sopsug)C++20
0 / 100
3 ms1604 KiB
//pB
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pii pair<int, int>
#define S second
#define F first
const int maxn = 3e5 + 10;
const int inf = 1e9;

int n, m, k;
vector<int> ban[maxn], v[maxn];
int cnt[maxn];
vector<pii> ans;
int vis[maxn];
int f1=-1, t1=-1, f2=-1, t2=-1;

bool dfs(int x, int num){
    //cout<<x<<" "<<num<<"--\n";
    if(num==n){
      return 1;
    }
  for(int i=max(0, num-3); i<n; i++){
      if(vis[i])  continue;
      if((x==f1 and i==t1) or (x==f2 and i==t2))  continue;
      vis[i]=1;
      if(dfs(i, num+1)){
          ans.push_back({x, i});
          return 1;
      }
      vis[i]=0;
  }
  return 0;
}


signed main(){
    ios_base::sync_with_stdio(0);  cin.tie(0);
  
    cin>>n>>m>>k;
    if(n<=k){
     // cout<<n<<" "<<k;
        cout<<"NO";
        return 0;
    }
    while(m--){
        int a, b;  cin>>a>>b;
        v[a].push_back(b);
        ans.push_back({a, b});
    }
    while(k--){
        int a, b;  cin>>a>>b;
        ban[a].push_back(b);
        cnt[a]++;
        if(f1==-1)  f1=a, t1=b;
        else  f2=a, t2=b;
    }
  
    memset(vis, 0, sizeof(vis));
    vis[0]=1;
    if(dfs(0, 1)){
        //cout<<ans.size()<<"\n";
        for(int i=ans.size()-1; i>=0; i--)
            cout<<ans[i].F<<" "<<ans[i].S<<"\n";
        return 0;
    }

    memset(vis, 0, sizeof(vis));
    vis[1]=1;
    if(dfs(1, 1)){
       // cout<<ans.size()<<"\n";
        for(int i=ans.size()-1; i>=0; i++)
            cout<<ans[i].S<<" "<<ans[i].F<<"\n";
        return 0;
    }

    memset(vis, 0, sizeof(vis));
    vis[2]=1;
    if(dfs(2, 1)){
       // cout<<ans.size()<<"\n";
        for(int i=ans.size()-1; i>=0; i++)
            cout<<ans[i].S<<" "<<ans[i].F<<"\n";
        return 0;
    }
  cout<<"NO";
  
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...