Submission #1368171

#TimeUsernameProblemLanguageResultExecution timeMemory
1368171kaiboyMeetings (JOI19_meetings)C++20
0 / 100
842 ms4544 KiB
#include "meetings.h"
#include <algorithm>
#include <iostream>

using namespace std;

const int N = 2000;

void Solve(int n) {
	bool aa[N][N];
	int dd[N], kk[N];

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++)
			aa[i][j] = false;
		dd[i] = 0;
	}
	aa[0][1] = aa[1][0] = true, dd[0]++, dd[1]++;
	for (int i_ = 2; i_ < n; i_++) {
		if (dd[i_])
			continue;
		for (int c = 0; c < n; c++)
			kk[c] = 0;
		for (int i = 0; i < n; i++)
			for (int j = i + 1; j < n; j++)
				if (aa[i][j]) {
					int c = Query(i, j, i_);
					if (c != i && c != j) {
						aa[i][j] = aa[j][i] = false, dd[i]--, dd[j]--;
						if (c == i_) {
							aa[i][i_] = aa[i_][i] = true, dd[i]++, dd[i_]++;
							aa[j][i_] = aa[i_][j] = true, dd[j]++, dd[i_]++;
						} else {
							aa[i][c] = aa[c][i] = true, dd[i]++, dd[c]++;
							aa[j][c] = aa[c][j] = true, dd[j]++, dd[c]++;
							aa[i_][c] = aa[c][i_] = true, dd[i_]++, dd[c]++;
						}
						goto out;
					}
					if (dd[c] == 1) {
						aa[i_][c] = aa[c][i_] = true, dd[i_]++, dd[c]++;
						goto out;
					}
					kk[c]++;
				}
		for (int c = 0; c < n; c++)
			if (kk[c] == 2) {
				aa[i_][c] = aa[c][i_] = true, dd[i_]++, dd[c]++;
				break;
			}
out:
		;
	}
	for (int i = 0; i < n; i++)
		for (int j = i + 1; j < n; j++)
			if (aa[i][j])
				Bridge(i, j);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...