Submission #1064328

#TimeUsernameProblemLanguageResultExecution timeMemory
1064328beaconmcBrought Down the Grading Server? (CEOI23_balance)C++14
25 / 100
387 ms34752 KiB
#include <bits/stdc++.h>
 
typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)
 
using namespace std;


map<ll,ll> sus;
map<ll,ll> sus2;
map<ll,ll> cnts;


set<vector<ll>> stuff[100005];

int main(){

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll n,s,t;
	cin >> n >> s >> t;
	vector<vector<ll>> cores;
	vector<vector<ll>> orient(n);


	FOR(i,0,n){
		ll a,b;
		cin >> a >> b;
		if (a==b){
			orient[i] = {a,b};
			continue;
		}
		cores.push_back({a,b});
		stuff[a].insert({b,i});
		stuff[b].insert({a,i});
	}

	ll cnt = 1;
	vector<ll> urg;
	FOR(i,1,n+1) if (stuff[i].size()==1) urg.push_back(i);


	while (cnt < n){
		if (stuff[cnt].size()==0) cnt++;
		ll cur = cnt;

		while (urg.size() && stuff[urg[urg.size()-1]].size() != 1) urg.pop_back();

		if (urg.size()){
			cur = urg[urg.size()-1];
			urg.pop_back();
		}


		while (1){
			if (stuff[cur].size()==0) break;

			vector<ll> node = (*stuff[cur].begin());

			orient[node[1]] = {cur, node[0]};
			stuff[cur].erase(node);
			stuff[node[0]].erase({cur, node[1]});

			if (stuff[cur].size() == 1) urg.push_back(cur);
			if (stuff[node[0]].size() == 1) urg.push_back(node[0]);

			cur = node[0];


			if (cur == cnt) break;
		}
	}
	for (auto&i : orient){
		sus[i[0]]++;
		sus2[i[1]]++;
		cout << i[0] << " " << i[1] << 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...