Submission #1113484

# Submission time Handle Problem Language Result Execution time Memory
1113484 2024-11-16T16:24:25 Z Nonoze Make them Meet (EGOI24_makethemmeet) C++17
18.7139 / 100
9000 ms 19456 KB
#include <bits/stdc++.h>
using namespace std;

#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define cmin(a, b) a=min(a, b)
#define cmax(a, b) a=max(a, b)
#define fi first
#define se second
#define pb push_back
#define mp make_pair

#define int long long

void solve();

signed main() {
	ios::sync_with_stdio(0); cin.tie(0);
	solve();
	return 0;
}

vector<vector<int>> vec;


void print() {
	cout << sz(vec) << endl;
	for (auto &a: vec) {
		for (auto &u: a) cout << u << ' ';
		cout << endl;
	}
	cout << endl;
}

void add(vector<int> &a) { vec.pb(a); }

int n, m;
vector<int> a, cnt;
vector<set<int>> adj;
vector<bool> visited, visited2, ok, tovisit;

bool dfs(int x) {
	bool flag=0;
	if (ok[x]) flag=1;
	visited2[x]=1;
	for (auto u: adj[x]) if (!visited[u] && !visited2[u]) {
		flag|=dfs(u);
	}
	return tovisit[x]=flag;
}

void dfs2(int x) {
	visited[x]=1;
	cnt[x]++;
	for (auto u: adj[x]) if (!visited[u]) {
		visited2.clear(), visited2.resize(n, 0);
		tovisit.clear(), tovisit.resize(n, 0);
		dfs(u);
		if (tovisit[u]) dfs2(u);
	}
}


void execute(int x) {
	visited[x]=1;
	for (auto u: adj[x]) if (!visited[u]) {
		visited2.clear(), visited2.resize(n, 0);
		tovisit.clear(), tovisit.resize(n, 0);
		dfs(u);
		if (tovisit[u]) {
			auto temp=a; temp[x]=0, temp[u]=0;
			add(temp);
			execute(u);
			add(temp);
		}
	}
}

void solve() {
	cin >> n >> m; a.clear(), a.resize(n, 0); iota(all(a), 1);
	adj.clear(), adj.resize(n), ok.clear(), ok.resize(n, 1);
	vector<set<int>> adjbase;
	for (int i=0; i<m; i++) {
		int u, v; cin >> u >> v;
		adj[u].insert(v), adj[v].insert(u);
	}
	adjbase=adj;
	for (int i=0; i<n-1; i++) {
		int best=-1;
		cnt.clear(), cnt.resize(n);
		for (int j=0; j<n; j++) {
			visited.clear(), visited.resize(n);
			dfs2(j);
		}
		for (int j=0; j<n; j++) if (ok[j] && (best==-1 || cnt[j]<cnt[best])) best=j;
		visited.clear(), visited.resize(n, 0);
		execute(best);
		ok[best]=0;
		for (auto u: adjbase[best]) {
			adjbase[u].erase(best);
		}
		adjbase[best].clear();
	}
	print();
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Partially correct 125 ms 11140 KB Partially correct
5 Partially correct 115 ms 11564 KB Partially correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 336 KB Output is correct
5 Correct 4 ms 336 KB Output is correct
6 Partially correct 66 ms 920 KB Partially correct
7 Partially correct 319 ms 1828 KB Partially correct
8 Partially correct 1041 ms 3144 KB Partially correct
9 Execution timed out 9049 ms 3948 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Partially correct 29 ms 1536 KB Partially correct
5 Partially correct 369 ms 10952 KB Partially correct
6 Partially correct 400 ms 11432 KB Partially correct
7 Partially correct 74 ms 3292 KB Partially correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Partially correct 125 ms 11140 KB Partially correct
5 Partially correct 115 ms 11564 KB Partially correct
6 Correct 1 ms 336 KB Output is correct
7 Correct 1 ms 336 KB Output is correct
8 Correct 1 ms 336 KB Output is correct
9 Partially correct 29 ms 1536 KB Partially correct
10 Partially correct 369 ms 10952 KB Partially correct
11 Partially correct 400 ms 11432 KB Partially correct
12 Partially correct 74 ms 3292 KB Partially correct
13 Correct 1 ms 336 KB Output is correct
14 Correct 1 ms 336 KB Output is correct
15 Correct 1 ms 336 KB Output is correct
16 Partially correct 108 ms 11140 KB Partially correct
17 Partially correct 110 ms 11664 KB Partially correct
18 Correct 1 ms 336 KB Output is correct
19 Correct 1 ms 336 KB Output is correct
20 Partially correct 30 ms 1616 KB Partially correct
21 Partially correct 386 ms 10868 KB Partially correct
22 Partially correct 420 ms 11392 KB Partially correct
23 Partially correct 72 ms 3144 KB Partially correct
24 Correct 1 ms 508 KB Output is correct
25 Correct 1 ms 336 KB Output is correct
26 Correct 1 ms 336 KB Output is correct
27 Partially correct 172 ms 16776 KB Partially correct
28 Partially correct 270 ms 11652 KB Partially correct
29 Partially correct 235 ms 11908 KB Partially correct
30 Partially correct 118 ms 12932 KB Partially correct
31 Partially correct 220 ms 18052 KB Partially correct
32 Partially correct 289 ms 12468 KB Partially correct
33 Partially correct 306 ms 12424 KB Partially correct
34 Partially correct 330 ms 11652 KB Partially correct
35 Partially correct 336 ms 19456 KB Partially correct
36 Partially correct 281 ms 14212 KB Partially correct
37 Partially correct 132 ms 11888 KB Partially correct
38 Partially correct 240 ms 14736 KB Partially correct
39 Partially correct 339 ms 19312 KB Partially correct
40 Partially correct 304 ms 11652 KB Partially correct
41 Partially correct 196 ms 17540 KB Partially correct
42 Partially correct 130 ms 12508 KB Partially correct
43 Partially correct 162 ms 15492 KB Partially correct
44 Partially correct 537 ms 18692 KB Partially correct
45 Partially correct 348 ms 19200 KB Partially correct
46 Correct 1 ms 336 KB Output is correct
47 Correct 1 ms 336 KB Output is correct
48 Correct 1 ms 336 KB Output is correct
49 Correct 1 ms 336 KB Output is correct
50 Correct 1 ms 336 KB Output is correct
51 Correct 1 ms 504 KB Output is correct
52 Correct 1 ms 336 KB Output is correct
53 Correct 1 ms 336 KB Output is correct
54 Correct 1 ms 336 KB Output is correct
55 Correct 1 ms 504 KB Output is correct
56 Correct 1 ms 504 KB Output is correct
57 Correct 1 ms 336 KB Output is correct
58 Correct 1 ms 336 KB Output is correct
59 Correct 1 ms 336 KB Output is correct
60 Correct 1 ms 336 KB Output is correct
61 Correct 1 ms 336 KB Output is correct
62 Correct 1 ms 336 KB Output is correct
63 Correct 1 ms 336 KB Output is correct
64 Correct 1 ms 336 KB Output is correct
65 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Partially correct 125 ms 11140 KB Partially correct
5 Partially correct 115 ms 11564 KB Partially correct
6 Correct 1 ms 336 KB Output is correct
7 Correct 1 ms 336 KB Output is correct
8 Correct 1 ms 336 KB Output is correct
9 Correct 1 ms 336 KB Output is correct
10 Correct 4 ms 336 KB Output is correct
11 Partially correct 66 ms 920 KB Partially correct
12 Partially correct 319 ms 1828 KB Partially correct
13 Partially correct 1041 ms 3144 KB Partially correct
14 Execution timed out 9049 ms 3948 KB Time limit exceeded
15 Halted 0 ms 0 KB -