제출 #1349072

#제출 시각아이디문제언어결과실행 시간메모리
1349072nagorn_phSeptember (APIO24_september)C++20
59 / 100
116 ms16572 KiB
#include "september.h"
#include <bits/stdc++.h>
#define int long long
#define emb emplace_back
#define pii pair <int, int>
#define tiii tuple <int, int, int>
#define tdii tuple <double, int, int>
#define all(a) a.begin(), a.end()

using namespace std;

const int N = 1e5 + 5;
const double inf = 1e18;

int n, m;
vector <int> adj[N];

int32_t solve(int32_t Nn, int32_t M, std::vector<int32_t> F, std::vector<std::vector<int32_t>> S) {
	n = Nn;
	m = M;
	for (int i = 0; i < n; i++) adj[i].clear();
	for (int i = 1; i < n; i++) {
		adj[i].emb(F[i]);
		adj[F[i]].emb(i);
	}
	vector <int> pre[n];
	for (int u = 0; u < n; u++) {
		for (auto v : adj[u]) {
			if (v == F[u]) continue;
			pre[u].emb(v);
		}
	}
	set <int> cur[m];
	bool visited[m][n]; memset(visited, 0, sizeof visited);
	int ans = 0;
	for (int i = 0; i < n-1; i++) {
		bool ok = 1;
		// cout << i << " : \n";
		for (int j = 0; j < m; j++) {
			auto u = S[j][i];
			// cout << u << ": ";
			for (auto v : pre[u]) {
				// cout << v << " ";
				if (!visited[j][v]) cur[j].emplace(v);
			}
			visited[j][u] = 1;
			if (cur[j].find(u) != cur[j].end()) cur[j].erase(u);
			// cout << "\n";
			if (cur[j].size()) ok = 0;
			// for (auto e : cur[j]) cout << e << " ";
			// cout << "\n";
		}
		// cout << "--------------------\n";
		if (ok) ans++;
	}
	return ans;
}
#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...