Submission #1348164

#TimeUsernameProblemLanguageResultExecution timeMemory
1348164settopSopsug (EGOI23_sopsug)C++20
82 / 100
5095 ms68520 KiB
#include<bits/stdc++.h>

using namespace std;

#define int long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define pb push_back
const int MAXN=3e5+10;
const int inf=1e16;

map<int,bool> mp[MAXN];
int n,m,k,pai[MAXN],cur,orz[MAXN];
vector<int> rev[MAXN];
bool ok;

void bfs(int x){
    queue<int> fila; fila.push(x);
    vector<int> cand;
    fall(i,0,n-1) if(pai[i]==-1 && i!=x) cand.pb(i);
    int vis=0;
    while(!fila.empty()){
        auto i=fila.front(); fila.pop();
        vector<int> ncd;
        ++vis;
        for(auto u:cand){
            if(mp[u][i]) ncd.pb(u);
            else{
                pai[u]=i;
                fila.push(u);
            }
        }
        for(auto u:rev[i]) fila.push(u);
        cand=ncd;
    }
    if(vis==n) ok=1;
}

int32_t main(){
    std::ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin>>n>>m>>k;
    fall(i,0,n-1) pai[i]=orz[i]=-1;
    bool da=1;
    fall(i,1,m){
        int a,b; cin>>a>>b;
        pai[a]=b; rev[b].pb(a); orz[a]=b;
    }
    fall(i,1,k){
        int a,b; cin>>a>>b;
        mp[a][b]=1; 
    }
    fall(i,0,n-1){
        if(pai[i]==-1) bfs(i);
        if(ok) break;
        fall(j,0,n-1) pai[i]=orz[i];
    }
    if(!ok){
        cout<<"NO\n";
        return 0;
    }
    fall(i,0,n-1) if(pai[i]!=-1) cout<<i<<" "<<pai[i]<<"\n";

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...