Submission #1200882

#TimeUsernameProblemLanguageResultExecution timeMemory
1200882muhammadali_2009September (APIO24_september)C++20
0 / 100
0 ms320 KiB
#include "september.h"

#include <bits/stdc++.h>
#define ll long long
using namespace std;

vector<vector<int>>g;
vector<vector<int>>vis;
vector<set<int>>st;
void dfs(int u,int j){
    vis[j][u] = 1;
    for(int v : g[u]){
        if(!vis[j][v]){
			st[j].insert(v);
			dfs(v, j);
		}
    }
}

int solve(int n, int m, std::vector<int> adj, std::vector<std::vector<int>> val) {
	g.assign(n, {});
	st.assign(n, {});
	vis.assign(n, vector<int>(m, 0));
	for(int i = 1; i < n; i ++){
		g[adj[i]].push_back(i);
	}
	int ans = 0, cnt = 0;
	vector<int>oc(n);
	for(int i = 0; i < n - 1; i ++){
		int ok = 1;
		for(int j = 0; j < m; j ++){
			int cur = val[j][i];
			oc[cur] ++;
			if(oc[cur] == m)cnt ++;
			if(st[j].count(cur))st[j].erase(cur);
			else dfs(cur, j);
			if(st[j].size() != 0)ok = 0;
		}
		if(ok && cnt == i + 1)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...