Submission #1354417

#TimeUsernameProblemLanguageResultExecution timeMemory
1354417yyc000123Sopsug (EGOI23_sopsug)C++20
12 / 100
606 ms1114112 KiB
#include<bits/stdc++.h>
using namespace std ;
#define F first
#define S second
const int N = 3e5+5 ;
int n , m , k , par[N] ;
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]) ;
}

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