#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
#define endl '\n'
using namespace std;
#define mid ((left+right)>>1)
int n,s,t;
int yon[100023],deg[100023];
pair<int,int>arr[100023];
vector<pair<int,int>>komsu[100023];
void f(int tar,int x){
yon[tar]=(x==arr[tar].fr?1:2);
deg[arr[tar].fr]--;
deg[arr[tar].sc]--;
}
void dfs(int bas){
int pos=bas;
while(deg[pos]){
while(yon[komsu[pos].back().sc])komsu[pos].pop_back();
f(komsu[pos].back().sc,pos);
pos=komsu[pos].back().fr;
}
}
int main(){
ios_base::sync_with_stdio(23^23);cin.tie(NULL);
cin>>n>>s>>t;
for(int i=1;i<=n;i++){
cin>>arr[i].fr>>arr[i].sc;
komsu[arr[i].fr].pb({arr[i].sc,i});
komsu[arr[i].sc].pb({arr[i].fr,i});
deg[arr[i].fr]++;
deg[arr[i].sc]++;
}
for(int i=1;i<=t;i++){
if(deg[i]&1){
dfs(i);
}
}
for(int i=1;i<=n;i++){
if(deg[i]){
dfs(i);
}
}
for(int i=1;i<=n;i++){
if(yon[i]==1)swap(arr[i].fr,arr[i].sc);
cout<<arr[i].fr<<" "<<arr[i].sc<<endl;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |