Submission #1354523

#TimeUsernameProblemLanguageResultExecution timeMemory
1354523yyc000123Sopsug (EGOI23_sopsug)C++20
13 / 100
1 ms752 KiB
#include<bits/stdc++.h>
using namespace std ;
#define F first
#define S second
const int N = 105 ;
int n , m , k , par[N] , arr[N][N] , lock1[N] , vis[N] , cnt ;
vector<int> nei[N] ;
vector<pair<int,int>> ans ;

int p(int k){
    if(par[k]<0) return k ;
    else return par[k]=p(par[k]) ;
}

void dfs(int node){
    vis[node]=1 ; cnt++ ;
    if(cnt==n) return ;
    int temp = 0 ;
    for(int i:nei[node]){
        if(!vis[i] && (lock1[i]==-1 || lock1[i]==node)) dfs(i) , ans.push_back({node,i}) , temp++ ;
        if(cnt==n) return ;
    }
    while(temp--) ans.pop_back() ;
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
    memset(par,-1,sizeof(par)) ;
    memset(lock1,-1,sizeof(lock1)) ;
    cin >> n >> m >> k ;
    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<n ; j++){
            if(i!=j) arr[i][j]=1 ;
        }
    }
    for(int i=0 ; i<m ; i++){
        int a , b ; cin >> a >> b ;
        int pa = p(a) , pb = p(b) ;
        if(pa==pb || pa!=a){
            cout << "NO\n" ; return 0 ;
        }
        lock1[a]=b ;
    }
    for(int i=0 ; i<k ; i++){
        int a , b ; cin >> a >> b ;
        arr[b][a]=0 ;
    }
    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<n ; j++){
            if(arr[i][j]) nei[i].push_back(j) ;
        }
    }
    for(int i=0 ; i<n ; i++){
        if(lock1[i]!=-1) continue ;
        memset(vis,0,sizeof(vis)) ; cnt=0 ;
        dfs(i) ;
        if(cnt==n) break ;
    }
    if(ans.size()!=n-1){
        cout << "NO\n" ; return 0 ;
    }
    for(int i=0 ; i<ans.size() ; i++) cout << ans[i].S << ' ' << ans[i].F << '\n' ;
    return 0 ;
}
#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...