Submission #1135609

#TimeUsernameProblemLanguageResultExecution timeMemory
1135609Joseph0121September (APIO24_september)C++20
30 / 100
1095 ms6964 KiB
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;
#define vt vector


int N,M;

int solve(int n, int m, vector<int> p, vector<vector<int>> vv){
	ios_base::sync_with_stdio(0);
	cin.tie(NULL);
	N = n; M = m;
	vt<vt<vt<int>>> e(m,vt<vt<int>>(N+1));
	vt<vt<int>> indeg(m,vt<int>(N+1,0)), indeg2(m,vt<int>(N+1,0));
	vt<vt<bool>> visited(M,vt<bool>(N+1,0));
	vt<vt<int>> arr(m,vt<int>(N+1));
	vector<deque<vector<int>>> s(M);
	vector<int> cnt(M,0);
	for(int i = 0;i<N;i++){
		int x = p[i];
		if(i == 0) continue;
		for(int j = 0;j<M;j++){
			e[j][i].push_back(x);
			indeg[j][x]++;
		}
		for(int i = 0;i<M;i++){
			for(int j = 0;j<N-1;j++){
				arr[i][j] = vv[i][j];
			}
		}
	}
	
	int ans = 0;
	for(int i = 0;i<N-1;i++){
		bool flag = true;
		for(int j = 0;j<M;j++){
			cnt[j]++;
			queue<vector<int>> q;
			q.push({indeg[j][arr[j][i]],arr[j][i]});
			visited[j][arr[j][i]] = true;
			while(q.size()){
				vector<int> v = q.front();
				
				// cout<<v[0]<<" "<<v[1]<<endl;
				if(v[0]!=0) break;
				cnt[j]--;
				q.pop();
				for(auto k: e[j][v[1]]){
					indeg[j][k]-=1;
					if(indeg[j][k] == 0 &&visited[j][k] && k!=0){
						q.push({0,k});
					}
				}
			}
		}
		//check if everyone if 0
		for(int j = 0;j<M;j++){
			// cout<<cnt[j]<<" ";
			if(cnt[j]) flag = false;
		}
		// cout<<"nxt"<<endl;
		if(flag) ans++;
	}
	// cout<<endl;
	// cout<<s[0].size()<<" "<<s[1].size()<<endl;
	return ans;
}

// int main() {
// 	cout<<solve(3,1,{-1, 0, 0},{{1,2}});

	
	
// 	return 0;
// }
#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...