제출 #1296177

#제출 시각아이디문제언어결과실행 시간메모리
1296177PieArmyBrought Down the Grading Server? (CEOI23_balance)C++20
35 / 100
40 ms21228 KiB
#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 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...