Submission #851951

# Submission time Handle Problem Language Result Execution time Memory
851951 2023-09-20T23:52:47 Z NK_ Senior Postmen (BOI14_postmen) C++17
100 / 100
360 ms 110288 KB
// Success consists of going from failure to failure without loss of enthusiasm
#include <bits/stdc++.h>
 
using namespace std;
 
#define nl '\n'
#define pb push_back
#define pf push_front
 
#define mp make_pair
#define f first
#define s second
#define sz(x) int(x.size())
 
template<class T> using V = vector<T>;
using pi = pair<int, int>;
using vi = V<int>;
using vpi = V<pi>;
 
using ll = long long;
using pl = pair<ll, ll>;
using vpl = V<pl>;
using vl = V<ll>;
 
using db = long double;
 
template<class T> using pq = priority_queue<T, V<T>, greater<T>>;
 
const int MOD = 1e9 + 7;
const ll INFL = ll(1e17);
const int LG = 18;

int main() {
	cin.tie(0)->sync_with_stdio(0);

	int N, M; cin >> N >> M;

	V<vpi> adj(N); vi E(M);
	vi cur(N, 0);
	for(int i = 0; i < M; i++) {
		int u, v; cin >> u >> v; --u, --v;
		adj[u].pb(mp(v, i));
		adj[v].pb(mp(u, i));
	}
	
	V<vi> ans;

	vi stk; vi vis(N); bool reset = 0;
	function<void(int)> dfs = [&](int u) {
		stk.pb(u); vis[u] = 1;
		// cerr << "ENTER " << u << endl;
		// cerr << "STK ";
		// for(auto& x : stk) cerr << x << " ";
		// cerr << endl;

		bool done = 1;
		while(cur[u] < sz(adj[u])) {
			int v, i; tie(v, i) = adj[u][cur[u]++];
			
			if (E[i]) continue;
			if (reset) return;
			done = 0; E[i] = 1;

			if (vis[v]) {
				vi cyc;
				for(int x = -1; x != v; ) {
					cyc.pb(x = stk.back()); stk.pop_back();
					vis[x] = 0;
				}
				// cerr << "CYC ";
				// for(auto& x : cyc) cerr << x << " ";
				// cerr << nl;


				ans.pb(cyc);
			}

			dfs(v); if (reset) return;
		}

		if (done) { 
			// cerr << "DONE " << u << endl;
			stk.pop_back(); vis[u] = -1; 
			reset = 1;
		}

		// cerr << "LEFT " << u << endl;
	};

	for(int i = 0; i < N; i++) {
		// cerr << i << " => " << vis[i] << endl;
		if (vis[i] != -1) dfs(i), reset = 0;
	}

	for(auto& v : ans) {
		for(auto& x : v) cout << x + 1 << " ";
		cout << nl;
	}

	exit(0-0);
} 
# Verdict Execution time Memory Grader output
1 Correct 1 ms 504 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 1 ms 984 KB Output is correct
5 Correct 1 ms 604 KB Output is correct
6 Correct 2 ms 1112 KB Output is correct
7 Correct 5 ms 2908 KB Output is correct
8 Correct 1 ms 860 KB Output is correct
9 Correct 31 ms 16720 KB Output is correct
10 Correct 2 ms 600 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 32 ms 17084 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 2 ms 856 KB Output is correct
5 Correct 1 ms 604 KB Output is correct
6 Correct 2 ms 1116 KB Output is correct
7 Correct 5 ms 2908 KB Output is correct
8 Correct 1 ms 856 KB Output is correct
9 Correct 30 ms 16888 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 32 ms 17176 KB Output is correct
13 Correct 52 ms 22352 KB Output is correct
14 Correct 34 ms 8916 KB Output is correct
15 Correct 47 ms 21200 KB Output is correct
16 Correct 45 ms 22212 KB Output is correct
17 Correct 41 ms 10504 KB Output is correct
18 Correct 42 ms 18636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 2 ms 856 KB Output is correct
5 Correct 1 ms 600 KB Output is correct
6 Correct 2 ms 1368 KB Output is correct
7 Correct 5 ms 2904 KB Output is correct
8 Correct 1 ms 856 KB Output is correct
9 Correct 28 ms 16852 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 860 KB Output is correct
12 Correct 37 ms 17180 KB Output is correct
13 Correct 43 ms 22228 KB Output is correct
14 Correct 43 ms 8912 KB Output is correct
15 Correct 45 ms 21184 KB Output is correct
16 Correct 44 ms 22216 KB Output is correct
17 Correct 39 ms 10508 KB Output is correct
18 Correct 42 ms 18428 KB Output is correct
19 Correct 349 ms 110244 KB Output is correct
20 Correct 265 ms 44608 KB Output is correct
21 Correct 299 ms 106936 KB Output is correct
22 Correct 360 ms 110288 KB Output is correct
23 Correct 155 ms 81000 KB Output is correct
24 Correct 310 ms 52196 KB Output is correct
25 Correct 344 ms 92532 KB Output is correct